Cod sursa(job #507783)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 6 decembrie 2010 19:38:43
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;

const int W = 10001;

ifstream in("energii.in");
ofstream out("energii.out");

int n, wmin = 10000000,w;

struct generator{
	int e,c;
} v[1<<10];

int consum [W];

inline int min(int x,int y){
	if(x<y)
		return x;
	return y;
}

void prelucrare(){
	int i,j;
	for(i=1;i<=n;i++){
		for(j=w;j>0;j--){
			if(consum[j]!=0){
				if(consum[j+v[i].e]==0)
					consum[j+v[i].e]=consum[j]+v[i].c;
				consum[j+v[i].e]=min(consum[j+v[i].e],consum[j]+v[i].c);
			}
		}
		if(consum[v[i].e]!=0)
			consum[v[i].e]=min(consum[v[i].e],v[i].c);
		else
			consum[v[i].e]=v[i].c;
	}
	for(j=w;j<W;j++){
		if(consum[j]<wmin && consum[j]>0)
			wmin=consum[j];
	}
	if(wmin==10000000)
		out<<"-1";
	else
		out<<wmin<<"\n";
}

int main(){
	in>>n>>w;
	int i;
	for(i=1;i<=n;i++){	
		in>>v[i].e>>v[i].c;
	}
	prelucrare();
	return 0;
}