Cod sursa(job #526432)

Utilizator matei_cChristescu Matei matei_c Data 28 ianuarie 2011 12:36:33
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>

int g,w,e[1001],c[1001],p,k, S,n,j;
int v[1000001];
int main()
{
	int i;
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d%d",&g,&w);
	S = w;
	for(i=1;i<=g;i++)
		scanf("%d%d",&e[i],&c[i]);
	v[0]=0;
	for(i=1;i<=1000001;i++)
		v[i]=-1;
	int min = 2000000000;
	v[e[1]]=c[1];
	for(i=2;i<=g;i++)
	{
		
		for( j = S; j >= 0; j--)
			if( v[ j ] != -1 )
			{
				if( v[ j + e[ i ] ] == - 1 || v[ j + e[ i ] ] > c[ i ] + v[ j ])
				v[j+e[i]]= c[i] + v[ j ];
				if( j + e[ i ] >= S) 
					if( v[ j + e[ i ] ] < min ) min = v[ j + e[ i ]];
			}
	}	
	if( min == 2000000000) min = -1;
	printf("%d",min);
	return 0;
}