Cod sursa(job #673712)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 4 februarie 2012 20:18:24
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include<fstream>
#define inf 12000
using namespace std;
#define lim 1002
#define lim2 10002
ifstream fin("energii.in");
ofstream fout("energii.out");
int cost[2][lim2],G,W,x;
struct generatoare{
	int p,c;
}
v[lim];
void read(){
	fin>>G>>W;
	for(int i=1;i<=G;i++){
		fin>>v[i].p>>v[i].c;
	}
}
int min(int a,int b){
	if(a<b)
		return a;
	return b;
}
void solve(){
	x=0;
	for(int i=1;i<=W;i++)
		cost[0][i]=cost[1][i]=inf;
	for(int i=1;i<=G;i++,x=1-x){
		for(int g=1;g<=W;g++){
			if(v[i].p<=g){
				cost[1-x][g]=min(cost[x][g],cost[1-x][g-v[i].p]+v[i].c);
			}
			else
				cost[1-x][g]=(cost[x][g],v[i].c);
		}
	}
}
void print(){
	if(cost[x][W]!=-1)
		fout<<cost[x][W];
	else
		fout<<"-1";
}
int main (){
	read();
	solve();
	print();
	return 0;
}