Cod sursa(job #1999232)

Utilizator prodaniucpavelProdaniuc Pavel prodaniucpavel Data 10 iulie 2017 17:57:40
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

int main()
{
    int nr_gen, pwr, best_cost = 30000, best_putere = 30000, putere = 0, cost = 0, best_gen = 0;
    float best_raport = 30000.0;

    fin >> nr_gen;
    fin >> pwr;

    int gen[nr_gen][2], banned_gens[nr_gen];

    for(int i = 0; i < nr_gen; i++) {
        fin >> gen[i][0];
        fin >> gen[i][1];

        banned_gens[i] = 0;
        putere += gen[i][0];
    }

    if(putere < pwr) {
        cost = -1;
    } else {
        putere = 0;

        while(putere < pwr) {
            for(int i = 0; i < nr_gen; i++) {
                for(int j = 0; j < nr_gen; j++) {
                    if(banned_gens[j] != j) {
                        continue;
                    }
                }

                if((float) gen[i][1]/gen[i][0] < best_raport) {
                    best_raport = (float) gen[i][1]/gen[i][0];
                    best_cost = gen[i][1];
                    best_putere = gen[i][0];
                    best_gen = i;
                }
            }

            putere += best_putere;
            cost += best_cost;

            banned_gens[best_gen] = best_gen;

        }
    }

    fout << cost;
}