Pagini recente » Cod sursa (job #1385621) | Istoria paginii runda/wellcodesimulareav-9martie/clasament | Cod sursa (job #1567095) | Cod sursa (job #2632751) | Cod sursa (job #2460546)
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
#define ARRAY_MAX 100005
int Generators, Weight, maxValue, result;
int Best[ARRAY_MAX];
struct Powerplant {
int Energy, Cost;
};
Powerplant Generator[ARRAY_MAX];
void Read() {
fin >> Generators >> Weight;
for (int i = 1; i <= Generators; i++)
fin >> Generator[i].Energy >> Generator[i].Cost;
}
int Result() {
for (int i = 1; i <= Generators; i++)
maxValue += Generator[i].Energy;
if (maxValue < Weight)
return -1;
for (int i = 1; i <= Generators; i++)
for (int j = maxValue - Weight; j >= 0; j--)
if (Best[j + Weight] < Best[j] + Generator[i].Cost) {
Best[j + Weight] = Best[j] + Generator[i].Cost;
if (Best[j + Weight] > result)
result = Best[j + Weight];
}
return result;
}
int main() {
Read();
fout << Result();
}