Cod sursa(job #2718542)

Utilizator DragosC1Dragos DragosC1 Data 8 martie 2021 19:51:38
Problema Energii Scor 55
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
using namespace std;
 
int G, W;
int E[1001];
int C[1001];
int dp[1001][10001];
const int Inf = 2e9;
int Min;

void read() {
	int i;
	ifstream f("energii.in");
	f >> G >> W;
	for (i = 1; i <= G; i++) 
		f >> E[i] >> C[i];
	f.close();
}
 
void solve() {
	int i, j;
	for (i = 0; i <= G; i++)
		for (j = 1; j <= 10000; j++)
			dp[i][j] = Inf;
	for (i = 1; i <= G; i++)
		for (j = 1; j <= 10000; 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];
	Min = Inf;
	for (i = W; i <= 10000; i++)
		if (dp[G][i] < Min)
			Min = dp[G][i];
}
 
void output() {
	ofstream g("energii.out");
	if (Min == Inf)
		g << -1;
	else g << Min;
	g.close();
}
 
int main() {
	read();
	solve();
	output();
	return 0;
}