Pagini recente » Cod sursa (job #2565149) | Cod sursa (job #1745432) | Cod sursa (job #2356224) | Cod sursa (job #1997609) | Cod sursa (job #3149509)
#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
int G, W, EG[1005], CG[1005];
int d[2][5005];
void citire() {
fin >> G >> W;
for (int i=1; i<=G; ++i) {
fin >> EG[i] >> CG[i];
}
}
int main()
{
citire();
int energie0=0, energie1=0;
for (int j=0; j<=W; ++j) {
d[0][j]=999999;
}
for (int i=1; i<=G; ++i) {
for (int j=EG[i]; j<=W; ++j) {
d[1][j]=min(CG[i]+d[0][j-EG[i]], d[0][j]);
if (CG[i]+d[0][j-EG[i]]>=d[0][j]) {
energie1=energie0;
}
if (CG[i]+d[0][j-EG[i]]<d[0][j]) {
energie1=energie1+EG[i];
}
}
for (int j=0; j<=W; ++j) {
d[0][j]=d[1][j];
energie0=energie1;
}
}
cout << energie0;
if (energie1>=W) {
fout << d[0][W];
}
else {
fout << -1;
}
return 0;
}