Cod sursa(job #947353)

Utilizator stefan.friptuPetru Stefan Friptu stefan.friptu Data 7 mai 2013 11:05:27
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

struct gen {
	long e;
	long c;
}v[1001];

long s[1001][5001];
long n,i,w,j,sol=2000000000;

int main () {
	
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	
	scanf("%ld%ld",&n,&w);
	
	for(i=1;i<=n;i++)
		scanf("%ld%ld",&v[i].e,&v[i].c);
	
	for(i=0;i<=n;i++)
        for(j=0;j<w;j++)
            s[i][j]=1000000000;
	
	s[0][0]=0;
	
	for(i=1;i<=n;i++)
	{
		for(j=0;j<w;j++)
		{
			if(j+v[i].e>=w)
			{
				if(s[i-1][j]+v[i].c<sol)
					sol=s[i-1][j]+v[i].c;
			}
			if(j>=v[i].e)
				s[i][j]=min(s[i-1][j],s[i-1][j-v[i].e]+v[i].c);
			else
				s[i][j]=s[i-1][j];
		}
	}
	
	if(sol>=1000000000)
		sol=-1;
	
	printf("%ld\n",sol);
	return 0;
}