Cod sursa(job #2342104)

Utilizator napsausageMateita David napsausage Data 12 februarie 2019 16:43:07
Problema Energii Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 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,grmax;

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;
        grmax+=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,j;
    long long sc=0,gc=0,smax=1999999;
    citire();
    for(j=1;j<=n;j++)
    for(i=j;i<=n;i++)
    {
            if(gc>=gmax)
            {
                if(sc<=smax)
                    smax=sc;
                while(gc<gmax)
                {
                    sc-=a[i].pret;
                    gc-=a[i].g;
                }
            }
            else
            {
                sc+=a[i].pret;
                gc+=a[i].g;
            }
        
    }
    if(grmax<gmax)
        fout<<-1;
    else fout<<smax;
    return 0;
}