Cod sursa(job #2718521)

Utilizator DragosC1Dragos DragosC1 Data 8 martie 2021 19:44:36
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
using namespace std;

long long G, W;
long long E[1001];
long long C[1001];
long long dp[1001][5001];
const long long Inf = 1e12;

void read() {
	long long i;
	ifstream f("energii.in");
	f >> G >> W;
	for (i = 1; i <= G; i++) 
		f >> E[i] >> C[i];
	f.close();
}

void solve() {
	long long i, j;
	for (i = 0; i <= G; i++)
		for (j = 1; j <= W; j++)
			dp[i][j] = Inf;
	for (i = 1; i <= G; i++)
		for (j = 1; j <= W; j++)
			if (j - E[i] >= 0)
				dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - E[i]] + C[i]);
			else dp[i][j] = dp[i - 1][j];
}

void output() {
	ofstream g("energii.out");
	if (dp[G][W] == Inf)
		g << -1;
	else
		g << dp[G][W];
	g.close();
}

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