Cod sursa(job #2394448)

Utilizator IordachescuAncaFMI Iordachescu Anca Mihaela IordachescuAnca Data 1 aprilie 2019 17:05:24
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include<fstream>
#include<algorithm>
using namespace std;

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

struct energie
{
    int cantitate;
    int cost;
    double raport;
};
energie v[1005];

bool cmp(energie a, energie b)
{
    if (a.raport == b.raport)
    {
        return 1;
    }
    if (a.raport > b.raport)
    {
        return 0;
    }
    return 1;
}

int main()
{
    int nr_generatoare, cantitate_energie;

    fin >> nr_generatoare;

    fin >> cantitate_energie;

    for (int i = 0; i < nr_generatoare; i++)
    {
        fin >> v[i].cantitate >> v[i].cost;
        v[i].raport = (double)v[i].cost / v[i].cantitate;
    }

    sort(v, v + nr_generatoare, cmp);

    int cnt = 0;
    int ans = 0;

    for(int i = 0; i < nr_generatoare; i++)
    {
        if (cnt >= nr_generatoare)
        {
            break;
        }

        if (cnt < nr_generatoare)
        {
            cnt = cnt + v[i].cantitate;
            ans = ans + v[i].cost;
        }

    }

    if (cnt < nr_generatoare)
    {
        fout << -1;
    }
    else
    {
        fout << ans;
    }


    fin.close();
    fout.close();
    return 0;
}