Cod sursa(job #2449624)

Utilizator LeCapataIustinian Serban LeCapata Data 20 august 2019 11:51:33
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

struct generator
{
    int e;
    int c;
};

generator v[1001];
int cost[1001];
int prod[1001];

bool compare(generator a, generator b)
{
    if(a.c!=b.c)
        return a.c < b.c;

    return a.e > b.e;
}

int main()
{
    int g, w, poz=0, minim=10011002;

    in>>g>>w;
    for(int i=1; i<=g; i++)in>>v[i].e>>v[i].c;
    sort(v+1,v+g+1,compare);

    for(int i=1; i<=g; i++)
    {
        if(prod[i-1]<w && v[i].e<w)
        {
            prod[i]=prod[i-1]+v[i].e;
            cost[i]=cost[i-1]+v[i].c;
        }
        else
        {
            prod[i]=v[i].e;
            cost[i]=v[i].c;
        }
        out<<prod[i]<<" "<<cost[i]<<'\n';
    }

    for(int i=1; i<=g; i++)
        if(prod[i]>=w && cost[i]<minim)
        {
            minim=cost[i];
            poz=i;
        }

    if(poz==0)out<<"-1";
    else out<<cost[poz];

    in.close();
    out.close();
    return 0;
}