Cod sursa(job #495363)

Utilizator Balmus_MaximBalmus Maximilian Balmus_Maxim Data 24 octombrie 2010 20:27:54
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>

#define maxs 10007


struct pos{
	int p;
	int c;
};

int msp(pos a, pos b){
	return a.c<b.c;
};

pos sol[maxs];

int G, W, i,j,e,c;

int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d",&G);
	scanf("%d",&W);
	sol[0].p=1;
	for(i=1;i<=maxs;i++){
		sol[i].c=32000;
	}
	for(i=1;i<=G;i++){
		scanf("%d%d",&e,&c);
		for(j=maxs;j>=0;j--){
			if(sol[j].p==1 || j+e<=maxs){
				sol[j+e].p=1;
				if(sol[j].c+c<sol[j+e].c){
					sol[j+e].c=sol[j].c+c;
				}
			}
		}
	}
	int s=0,min=32000;
	for(i=W; i<=maxs;i++){
		if(sol[i].p==1){
			s=1;
			if(min>sol[i].c){
			min=sol[i].c;
		}
		}
	}
	if(s==1){
		printf("%d",min);
	}else{
	printf("-1");
}
	return 0;
}