Cod sursa(job #507790)

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

using namespace std;

const int W = 10001;
const int INF = 1<<30;

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

int n, wmin = INF,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]!=INF){
				consum[j+v[i].e]=min(consum[j+v[i].e],consum[j]+v[i].c);
			}
		}
		consum[v[i].e]=min(consum[v[i].e],v[i].c);
	}
	for(j=w;j<W;j++){
		if(consum[j]<wmin)
			wmin=consum[j];
	}
	if(wmin==INF)
		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;
	}
	for(i=0;i<W;i++){
		consum[i]=INF;
	}
	prelucrare();
	return 0;
}