Cod sursa(job #1817856)

Utilizator ancapopPop Anca ancapop Data 28 noiembrie 2016 16:09:32
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("energii.in");
ofstream g ("energii.out");
struct energii
{
    int eg,cg;
}ge[1001];
int G,W,cmin;
int suma()
{
    int s=0;
    for(int i=1;i<=G;i++)
        s=s+ge[i].eg;
    return s;
}
void ordonare()///descrescator dupa cost
{
    energii aux;
    for(int i=1;i<G;i++)
        for(int j=i+1;j<=G;j++)
          if(ge[i].cg < ge[j].cg)
    {
        aux=ge[i];
        ge[i]=ge[j];
        ge[j]=aux;
    }

}
void greedy()
{
    int ok=0;
    for(int i=1;i<=G ;i++)
    {
        if(ge[i].eg==W)
           {
            g<<ge[i].cg;
            W=W-ge[i].eg;
            ok=1;
           }

        if(ge[i].eg < W)
        {
            cmin=cmin+ge[i].cg;
            W=W-ge[i].eg;
        }

    }
    if(W>0)
        g<<-1;
    if(ok==0)
        g<<cmin;

}
int main()
{
    f>>G>>W;
    for(int i=1;i<=G;i++)
        f>>ge[i].eg>>ge[i].cg;
    ordonare();
    greedy();
    return 0;
}