Cod sursa(job #327655)

Utilizator popoiu.georgeGeorge Popoiu popoiu.george Data 29 iunie 2009 18:41:35
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<stdio.h>
using namespace std;

struct generator
{
int energie;
int cost;
float ef;
};

int g,w,cmin;
generator v[1002];

int main()
{
int i,gasit,aux,ener=0;
float faux;
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d%d",&g,&w);
for(i=1;i<=g;i++)
    {
    scanf("%d%d",&v[i].energie,&v[i].cost);    
    v[i].ef=((float)(v[i].cost))/((float)(v[i].energie));
    }
do
    {
    gasit=0;
    for(i=1;i<=g-1;i++)
        {
        if(v[i].ef>v[i+1].ef)
            {
            faux=v[i].ef;v[i].ef=v[i+1].ef;v[i+1].ef=faux;
            aux=v[i].cost;v[i].cost=v[i+1].cost;v[i+1].cost=aux;
            aux=v[i].energie;v[i].energie=v[i+1].energie;v[i+1].energie=aux;
            gasit=1;
            }
        }
    }    
while(gasit);
i=1;
while( (ener<w) && (i<=g) )
    {
    cmin+=v[i].cost;
    ener+=v[i].energie;
    i=i+1;
    }
if(ener<w)printf("-1");
else printf("%d",cmin);
return 0;
}