Cod sursa(job #2403383)

Utilizator Andrei012Trache Andrei Andrei012 Data 11 aprilie 2019 15:02:58
Problema Energii Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <cstdio>
#include <algorithm>

using namespace std;

struct ura{
    int e;
    int c;
};

bool cmp(ura a,ura b){
    if(a.c*b.e<a.e*b.c)
        return true;
    return false;
}

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);

    ura v[1001];
    int n,s,cm=0,i,cmin=99999999,cinc,inc;
    cin>>n;
    cin>>s;
    for(i=1;i<=n;i++)
        cin>>v[i].e>>v[i].c;
    sort(v+1,v+n,cmp);
    inc=1;
    cinc=1;
    for(i=1;i<=n && s>0;i++){
        s-=v[i].e;
        cm+=v[i].c;
        if(s<0){
            if(cm<cmin)
                cmin=cm;
            cinc=inc;
            while(s<=0 && cinc<=i){
                s+=v[cinc].e;
                cm-=v[cinc].c;
                cinc++;
            }
            inc=cinc;
            if(cm<cmin && s==0)
                cmin=cm;
        }
    }
    if(cmin==99999999)
        cout<<-1;
    else
        cout<<cmin;
    return 0;
}