Cod sursa(job #2718551)

Utilizator DragosC1Dragos DragosC1 Data 8 martie 2021 19:58:10
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
	
#include <fstream>
using namespace std;
 
int G, W;
int E[1001];
int C[1001];
int dp[2][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 <= 1; i++)
		for (j = 1; j <= 10000; j++)
			dp[i % 2][j] = Inf;
	for (i = 1; i <= G; i++)
		for (j = 1; j <= 10000; j++)
			if (j - E[i] >= 0)
				dp[i % 2][j] = min(dp[1 - i % 2][j], dp[1 - i % 2][j - E[i]] + C[i]);
			else dp[i % 2][j] = dp[1 - i % 2][j];
	Min = Inf;
	for (i = W; i <= 10000; i++)
		if (dp[G % 2][i] < Min)
			Min = dp[G % 2][i];
}
 
void output() {
	ofstream g("energii.out");
	if (Min == Inf)
		g << -1;
	else g << Min;
	g.close();
}
 
int main() {
	read();
	solve();
	output();
	return 0;
}