Cod sursa(job #2684443)

Utilizator cezar.balutaCezar Baluta cezar.baluta Data 13 decembrie 2020 18:38:24
Problema Energii Scor 15
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

struct generator
{
    int energie;
    int cost;
    float raport;
};

bool sortare(generator a, generator b)
{
    if(a.raport<b.raport)
        return 1;
    return 0;
}

int main()
{
    ifstream in("energii.in");
    ofstream out ("energii.out");
    int cost_minim=1000000000;
    int cate_generatoare, cost_repornire;
    generator generatoare[100];
    in>>cate_generatoare>>cost_repornire;
    for(int i=0; i<cate_generatoare; i++)
    {
        in>>generatoare[i].energie>>generatoare[i].cost;
        generatoare[i].raport=(float)generatoare[i].cost/generatoare[i].energie;
    }
    sort(generatoare,generatoare+cate_generatoare,sortare);
    int variabila_cost=0,variabila_energie=0,st=0;
    for(int i=0; i<cate_generatoare; i++)
    {
        variabila_cost+=generatoare[i].cost;
        variabila_energie+=generatoare[i].energie;
        if(variabila_energie>=cost_repornire)
        {
            while(variabila_energie>=cost_repornire)
            {
                cost_minim=min(cost_minim,variabila_cost);
                variabila_cost-=generatoare[st].cost;
                variabila_energie-=generatoare[st].energie;
                st++;
            }
        }

    }
            out<<cost_minim;

    return 0;
}