Cod sursa(job #2342074)

Utilizator napsausageMateita David napsausage Data 12 februarie 2019 16:22:33
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>
#include <algorithm>
using namespace std;

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

const int N=1002;
int n,gmax;

struct obiect{
    int pret;
    int g;
    float raport;
};
obiect a[N];

bool cmp(obiect x,obiect y)
{
    return x.raport<=y.raport;
}

void citire()
{
    fin>>n;
    fin>>gmax;
    for(int i=1;i<=n;i++)
    {
        fin>>a[i].g>>a[i].pret;
        a[i].raport=(float)a[i].pret/a[i].g;
    }
    sort(a+1,a+n+1,cmp);
}

void afisare()
{
    for(int i=1;i<=n;i++)
    {
        fout<<a[i].g<<" "<<a[i].pret<<" "<<a[i].raport<<'\n';
    }
}


int main()
{
    int i;
    long long sc=0,gc=0,smax=0;
    citire();
    for(i=1;i<=n;i++)
    {
        
        if(gc>=gmax)
        {
            if(sc<=smax)
                smax=sc;
            sc-=a[i].pret;
            gc-=a[i].g;
        }
        else
        {
            sc+=a[i].pret;
            gc+=a[i].g;
        }
    }
    if(gc<gmax)
        fout<<-1;
    else fout<<smax;
    return 0;
}