Cod sursa(job #517731)

Utilizator auRSTARHreapca Aurelian auRSTAR Data 29 decembrie 2010 17:24:23
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<cstdio>
#define min(a,b) a<b?a:b
void read(),solve();
int i,j,G,W,EG[1001],CG[1001];
long long M[1001][5001],SE;
int main()
{
	read();
	solve();
	return 0;
}
void read()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d%d",&G,&W);
	for(i=1;i<=G;i++)
	{
		scanf("%d%d",&EG[i],&CG[i]);
		SE+=EG[i];
	}
}
void solve()
{
	if(SE<W){printf("-1\n");return;}
	for(i=1;i<=W;i++)M[0][i]=1<<20;
	for(i=1;i<=G;i++)
		for(j=1;j<=W;j++)
		{
			if(EG[i]>j){M[i][j]=min(M[i-1][j],EG[i]);continue;}
			M[i][j]=min(M[i-1][j],M[i-1][j-EG[i]]+CG[i]);
		}
	printf("%lld\n",M[G][W]);
}