Cod sursa(job #588718)

Utilizator toniobFMI - Barbalau Antonio toniob Data 9 mai 2011 10:44:00
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
using namespace std;

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

const int N = 1007;
const int INF = 1 << 30;
int n, cost[N * 15], e[N], c[N], w, s;

int main () {
	in >> n >> w;
	for (int i = 1; i <N*15; ++i) {
		cost[i] = INF;
	}
	for (int i = 1; i <= n; ++i) {
		in >> e[i] >> c[i];
		s += e[i];
	}
	if (s < w) {
		out << "-1\n";
		return 0;
	}
	for (int i = 1; i <= n; ++i) {
		for (int j = w - 1; j--; ) {
			if (cost[j] != INF && cost[j] + c[i] < cost[j + e[i]]) {
				cost[j + e[i]] = cost[j] + c[i];
			}
		}
		if (c[i] < cost[e[i]]) {
			cost[e[i]] = c[i];
		}
	}
	int mmin = INF;
	for (int i = w; i < N*15 ; ++i) {
		if (cost[i] < mmin) {
			mmin = cost[i];
		}
	}
	out << mmin;
	return 0;
}