Cod sursa(job #697632)

Utilizator hancnaumHanc Naum Flavius hancnaum Data 29 februarie 2012 10:19:22
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>
const int MaxN=5005;
const int MAX=1<<30;
int W,CGi,EGi,G,sol,p[MaxN];
int minim(int a, int b)
{
	if(a>b) return b;
    return a;
}
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    for(register int i=0;i<MaxN;++i)
    {
        p[i]=MAX;
    }
    scanf("%d",&G);
    scanf("%d",&W);
    p[0]=1;
    for(int i=0;i<G;++i)
    {
        scanf("%d %d",&EGi,&CGi);
        for(int j=MaxN-1;j>=0;--j)
        {
            if(p[j]!=MAX)
            {
                int pos=j+EGi;
                if(pos>W)
					pos=W;
                p[pos]=minim(p[pos],p[j]+CGi);
            }
        }
    }
if(p[W]==MAX)
        p[W]=0;
printf("%d",p[W]-1);
    return 0;
}