Pagini recente » Borderou de evaluare (job #1036657) | Cod sursa (job #2288845) | Cod sursa (job #1369456) | Cod sursa (job #3256312) | Cod sursa (job #3149933)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
//G - numarul de generatoare
//W - cantitatea de energie necesara
//EG - cantitatea de energie produsa de generator
//CG - costul necesar producerii
//d[i][j] - ENERGIA MAXIMA CARE POATE FI PRODUSA DE GENERATOARELE PANA LA I FOLOSIND J LEI
int G, W, EG[1005], CG[1005];
int d[1005][5005];
void citire() {
fin >> G >> W;
for (int i=1; i<=G; ++i) {
fin >> EG[i] >> CG[i];
}
}
int main()
{
citire();
int costmax=0;
bool OK=false;
int costnecesar=0;
for (int i=1 ;i<=G; ++i) {
costmax=costmax+CG[i];
}
for (int i=1; i<=G; ++i) {
for (int j=0; j<=CG[i]-1; ++j) {
d[i][j]=d[i-1][j];
}
for (int j=CG[i]; j<=costmax; ++j) {
d[i][j]=max(EG[i]+d[i-1][j-CG[i]], d[i-1][j]);
}
}
for (int i=1; i<=G && OK==false; ++i) {
for (int j=0; j<=costmax && OK==false; ++j) {
if (d[i][j]>=W) {
costnecesar=j;
OK=true;
}
}
}
if (OK==true) {
fout << costnecesar;
}
else {
fout << -1;
}
return 0;
}