Cod sursa(job #384761)

Utilizator darrenRares Buhai darren Data 20 ianuarie 2010 21:22:41
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
using namespace std;

struct gen {
	int en,co;
}a[1002];
long long b[5005],s=50000000;
int g,w;

void read();
void solve();
void write();

int main() {
	read();
	solve();
	write();
	return 0;
}

void read() {
	ifstream fin("energii.in");
	fin>>g>>w;
	for (int i=0;i<g;i++)
		fin>>a[i].en>>a[i].co;
	fin.close();
}

void solve() {
	long max=0;
	b[0]=-1;
	for (int i=0;i<w;i++)
		b[i]=-1;
	b[0]=0;
	for (int i=0;i<g;i++)
		for (long long j=max;j>=0;j--)
			if (b[j]!=-1) {
				b[j+a[i].en]=b[j]+a[i].co;
				if (j+a[i].en>max && j+a[i].en<w)
					max=j+a[i].en;
				if (j+a[i].en>=w && b[j]+a[i].co<s)
					s=b[j]+a[i].co;
			}
}

void write() {
	ofstream fout("energii.out");
	if (s==50000000)
		fout<<-1;
	else
		fout<<s;
	fout.close();
}