Cod sursa(job #354587)

Utilizator proflaurianPanaete Adrian proflaurian Data 8 octombrie 2009 20:57:59
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<stdio.h>
#define oo 1<<30
#define MIN(x,y) x<y?x:y;
void read(),solve();
int N,G,c[5005],i,E,C,j,S=oo;
int main() 
{
	read();
	solve();
	return 0;
} 
 
void read()
{     freopen("energii.in","r",stdin);
      freopen("energii.out","w",stdout); 
      scanf("%d%d",&N,&G); 
       
      for(i=1;i<G;i++) c[i]=oo; 
}
    
 
void solve()
{
    for(i=1;i<=N;i++)
	{
		scanf("%d%d",&E,&C); 
        if(E>=G)
		{
			
			if(C<S)
				S=C;
			continue;
		}
		for(j=G-E;j<G;j++)S=MIN(S,c[j]+C);
        for(j=G;j>=E;j--)c[j]=MIN(c[j],c[j-E]+C);
	}
	S==oo?printf("-1\n"):printf("%d\n",S); 	 
}