Pagini recente » Cod sursa (job #1755870) | Cod sursa (job #1994807) | Cod sursa (job #2176724) | Cod sursa (job #3152767) | Cod sursa (job #2394685)
#include <iostream>
#include <fstream>
using namespace std;
int G; //nr generatoare
int W; //cant min de energie
int E[1005]; //energia produsa de generatoru i
int C[1005]; //costu pornirii generatorului i
int d[1005][1005]; //d[i][j] = energia produsa de minim i generatoare cu costul maxim j
int main()
{
ifstream in ("energii.in");
ofstream out ("energii.out");
in>>G;
in>>W;
int minim = 1e9;
int cost_total = 0;
for(int i = 1; i <= G; ++i)
{
in>>E[i]>>C[i];
cost_total += C[i];
}
for(int i = 1; i <= G; ++i)
for(int j = 0; j <= cost_total; ++j)
{
d[i][j] = d[i - 1][j];
if(j >= C[i])
d[i][j] = max(d[i][j], d[i][j - C[i]] + E[i]);
if(d[i][j] >= W)
{
if(j < minim)
minim = j;
}
}
if(minim != 1e9)
out<<minim;
else
out<<"-1";
return 0;
}