Cod sursa(job #2284998)

Utilizator driver71528@gmail.comTerec Andrei-Sorin [email protected] Data 17 noiembrie 2018 21:19:34
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

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

struct generator
{
    int e,c;
};
generator G[1002];
int n,w,rezc,reze;

bool comp(generator a,generator b)
{
    return (double(a.e)/a.c)>(double(b.e)/b.c);
}


int main()
{
    f>>n>>w;
    for(int i=1;i<=n;i++)
        f>>G[i].e>>G[i].c;
    f.close();

    sort(G+1,G+n+1,comp);
    for(int i=1;i<=n;i++)
        cout<<G[i].e<<' '<<G[i].c<<endl;

    int i=1,j=1;
    reze=G[1].e;
    rezc=G[1].c;
    int sol=INT_MAX;
    while(reze!=w && j<=n)
    {
        if(reze<w)
        {
            j++;
            reze+=G[j].e;
            rezc+=G[j].c;
        }
        else
        {
            if(rezc<sol)
                sol=rezc;
            reze-=G[i].e;
            rezc-=G[i].c;
            i++;
            if(i>j)
            {
                j++;
                reze=G[j].e;
                rezc=G[j].c;
            }
        }
    }
    if(reze==w)
        sol=rezc;
    g<<(sol==INT_MAX? -1 : sol);

    return 0;
}