Cod sursa(job #487445)

Utilizator Sm3USmeu Rares Sm3U Data 25 septembrie 2010 11:21:24
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <cstdio>

using namespace std;

struct gen{

 int e;// energie;
 int c;// cantitate;
 double r;// raport e/c;
}a[1005],aux;

int g;
int v;
int cost=0;
int energie=0;


void sortare()
{
    int ok=1;
    int n=g;
    while(ok == 1)
    {
        ok = 0;
        for(int i=0;i<n-1;i++)
            if(a[i].r<a[i+1].r)
            {
                aux=a[i];
                a[i]=a[i+1];
                a[i+1]=aux;
                ok = 1;

            }
        n--;

    }

}

void citire()
{
    scanf("%d",&g);
    scanf("%d",&v);
    for(int i=0;i<g;i++)
    {
        scanf("%d %d",&a[i].e,&a[i].c);
        a[i].r= (double)a[i].e / (double)a[i].c;
    }
}

void ceva()
{
    sortare();

    for(int i=0;i<g;i++)
    {
        if(energie + a[i].e>= v )
        {
            int bun = i;
            for(int j=0; j<g;j++)
            {
                if(energie + a[j].e>=v  && a[j].c < a[bun].c)
                {
                    bun=j;
                }

            }
            energie+=a[bun].e;
            cost+=a[bun].c;
            break;
        }
        energie+=a[i].e;
        cost+=a[i].c;

    }
    if(energie >= v)
        printf("%d",cost);
    else
        printf("-1");
}

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

    citire();
    ceva();

    return 0;
}