Cod sursa(job #1592763)

Utilizator demetriad-dagpagDavid Demetriad demetriad-dagpag Data 7 februarie 2016 22:17:54
Problema Energii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
#include <stdlib.h>
int min(int a,int b)
{
    if(a<b)
        return a;
    return b;
}
int s[10001],e[10001],g[10001];
int main()
{
    int n,w,i,j,minim;
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d",&n,&w);
    for(i=1; i<=n; i++)
        scanf("%d%d",&e[i],&g[i]);
    for(i=1; i<=10000; i++)
        s[i]=-1;
    for(i=1; i<=n; i++)
        for(j=10000-e[i]; j>=0; j--)
        {
            if(s[j]>=0)
                if(s[j+e[i]]==-1)
                    s[j+e[i]]=s[j]+g[i];
                else
                    s[j+e[i]]=min(s[j+e[i]],s[j]+g[i]);
        }
    minim=100000000;
    for(i=w; i<=10000; i++)
        if(s[i]!=-1 && s[i]<minim)
            minim=s[i];
    if(minim==100000000)
        minim=-1;
    printf("%d\n",minim);

    return 0;
}