Cod sursa(job #2334449)

Utilizator luca_pookPopescu Luca luca_pook Data 2 februarie 2019 17:09:38
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define smax 50000000

using namespace std;

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

struct generator
{
   unsigned eg,cg;
}gen[1001];

bool cmp(generator &a, generator &b)
{
    return a.cg < b.cg;
}

int main()
{
    unsigned j,i,w,g;
    unsigned long s=0,costmin=10000000;
    in >> g >> w;
    for(i=1;i<=g;i++)
    {
        in >> gen[i].eg >> gen[i].cg;
        s+=gen[i].eg;
    }
    if(!(s>=w)) out << -1;
    else  {
          sort(gen+1,gen+g+1,cmp);
          for(i=g;i>=1;i--)
             if(gen[i].eg>=w) costmin = gen[i].cg;
             else {
                        j = 1;
                        unsigned sumeg = gen[i].eg+gen[j].eg,sumcg = gen[i].cg+gen[j].cg;
                         j++;
                        while(sumeg<w && j!=i) {
                          sumeg+=gen[j].eg;
                          sumcg+=gen[j].cg;
                          j++;
                    }
                       if(sumeg>=w && costmin>sumcg) costmin = sumcg;
                 }
         out << costmin;
    }
    return 0;
}