Cod sursa(job #167648)

Utilizator lache92Hulub Ionut-Adrian lache92 Data 29 martie 2008 21:26:52
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <fstream.h>
#include <iostream.h>

struct gen {
       int eng;
       int cost;
       float rap;
       } gnr[10001];

int main() {

    int nrgen, enec, i, nrmax; long int suma = 0, cost = 0;
    struct gen {
           int eng;
           int cost;
           float rap;
           } gnr[10001];
    ifstream f("energii.in");
    ofstream fout("energii.out");
    f>>nrgen>>enec;
    for (i = 0; i < nrgen; i++) {
        f>>gnr[i].eng>>gnr[i].cost;
        gnr[i].rap = gnr[i].eng/gnr[i].cost;
        suma += gnr[i].eng;
        cost += gnr[i].eng;
        }
    if (suma < enec) {
             fout<<"-1";
             return 0;
             }
    else if (suma == enec) {
         fout<<cost;
         return 0;
         }
    suma = cost = 0;
    do {
        nrmax = 0;
    for (i = 0; i < nrgen-1; i++)
        if (nrmax<gnr[i].rap)
           nrmax = i; cout<<i<<" ";
    if (suma + gnr[i].eng > enec)
       break;
    gnr[i].rap = 0;
    cost += gnr[i].cost;
    suma += gnr[i].eng;
         }
    while (suma < enec);
    if (suma < enec)
             for (i = 0; i < nrgen-1; i++)
                 if (suma + gnr[i].eng >= enec)
                    if (gnr[i].cost < nrmax)
                       nrmax = gnr[i].cost;
    cost += nrmax;
    fout<<cost;
    return 0;
}