Cod sursa(job #1425197)

Utilizator MciprianMMciprianM MciprianM Data 26 aprilie 2015 22:47:10
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#include <cstring>

using namespace std;

static const int MAXN = 1001;
static const int MAXW = 5000;
int eg[MAXN], cg[MAXN];
int s[MAXW * 2];

int main() {
	int g, w;
	ifstream f("energii.in");
	f >> g >> w;
	for(int i = 0; i < g; i++) {
		f >> eg[i] >> cg[i];
	}
	f.close();
	memset(s, 0x3F, sizeof(s));
	s[0] = 0;
	for(int j = 0; j < g; j++)
		for(int i = MAXW; i >= 0; i--)
			s[i + eg[j]] = min(s[i] + cg[j], s[i + eg[j]]);
	int ans = s[MAXW * 2 - 1];
	for(int i = MAXW * 2 - 1; i >= w; i--) {
		ans = min(ans, s[i]);
	}
	if(ans == s[MAXW * 2 - 1])	ans = -1;
	ofstream fout("energii.out");
	fout << ans << endl;
	fout.close();
	return 0;
}