Cod sursa(job #549440)

Utilizator impulseBagu Alexandru impulse Data 8 martie 2011 16:34:15
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<fstream>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int G,W;
struct generator
{
    double eff;
    int enprod;
    int encost;
};

vector<generator> vect;

bool comp(generator g1, generator g2)
{
    return (g1.eff > g2.eff);
}

int main()
{
    ifstream fin("energii.in");
    fin>>G>>W;
    vect.reserve(G);
    for(int c = 0; c < G; c++)
    {
        generator g;
        fin>>g.enprod;
        fin>>g.encost;
        g.eff = (double)g.enprod / (double)g.encost;
        vect.push_back(g);
    }
    fin.close();
    sort(vect.begin(), vect.end(), comp);
    int min = 0;
    for(int c = 0; c < G; c++)
    {
        if(vect[c].enprod >= W)
        {
            W = 0;
            min += vect[c].encost;
            break;
        }
        else
        {
            W -= vect[c].enprod;
            min += vect[c].encost;
        }
    }
    ofstream fout("energii.out");
    if(W != 0)
        fout<<"-1";
    else
        fout<<min;
    fout.close();
    return 0;
}