Cod sursa(job #2460546)

Utilizator nTropicGravityesadasdwaadwqafr nTropicGravity Data 23 septembrie 2019 21:32:45
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#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();
}