Cod sursa(job #737491)

Utilizator visanrVisan Radu visanr Data 19 aprilie 2012 15:33:02
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;

struct generator
{
       int energy,cost;
       double raport;
};
vector<generator> v;
int TotalEnergy,SumOfEnergy=0,TotalCost=0,NumberOfG,CurrentCost,CurrentEnergy;

bool cmp(generator one, generator two)
{
     return one.raport>two.raport;
}

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    int i;
    scanf("%i %i", &NumberOfG,&TotalEnergy);
    for(i=0;i<NumberOfG;i++)
    {
                            scanf("%i %i", &CurrentEnergy,&CurrentCost);
                            generator New;
                            New.energy=CurrentEnergy;
                            New.cost=CurrentCost;
                            New.raport=(CurrentEnergy*1.0) / CurrentCost;
                            v.push_back(New);
    }
    sort(v.begin(),v.end(),cmp);
    bool ok=false;
    for(i=0;i<v.size();i++)
    {
                           SumOfEnergy+=v[i].energy;
                           TotalCost+=v[i].cost;
                           if(SumOfEnergy>=TotalEnergy)
                           {
                                                       ok=true;
                                                       break;
                           }
    }
    if(ok) printf("%i\n", TotalCost);
    else printf("-1");
    //scanf("%i", &i);
    return 0;
}