Cod sursa(job #495344)

Utilizator Balmus_MaximBalmus Maximilian Balmus_Maxim Data 24 octombrie 2010 19:46:15
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>
#include <algorithm>
using namespace std;

#define maxs 10001

struct rr{
	int c;
	int en;
};

struct pos{
	int p;
	int c;
};

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

pos sol[maxs];

rr gen[1010];

int G, W, i,j;

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=12000;
	}
	for(i=1;i<=G;i++){
		scanf("%d%d",&gen[i].en,&gen[i].c);
		for(j=maxs;j>=0;j--){
			if(sol[j].p==1){
				if(j+gen[i].en<=maxs){
					sol[j+gen[i].en].p=1;
					if(sol[j].c+gen[i].c<sol[j+gen[i].en].c){
						sol[j+gen[i].en].c=sol[j].c+gen[i].c;
					}
				}
			}
		}
	}
	sort(sol+W+1,sol+maxs+1,msp);
	int s=0;
	for(i=W; i<=maxs;i++){
		if(sol[i].p==1){
			printf("%d ",sol[i].c);
			return 0;
		}
	}
	printf("-1");
	return 0;
}