Pagini recente » Cod sursa (job #1146950) | Cod sursa (job #182709) | Cod sursa (job #42709) | Cod sursa (job #653916) | Cod sursa (job #327658)
Cod sursa(job #327658)
#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;
}
else if(v[i].ef==v[i+1].ef)
{
if(v[i].cost>v[i+1].cost)
{
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;
}