Pagini recente » Cod sursa (job #2777468) | Cod sursa (job #1042524) | Cod sursa (job #2037496) | Cod sursa (job #340434) | Cod sursa (job #314823)
Cod sursa(job #314823)
#include<stdio.h>
float e[5001];
int gen[5001][2];
int poz[5001],consum,g,w,h,sw,i,tot;
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d%d", &g, &w);
for(i=1;i<g+1;++i)
{ scanf("%d%d", &gen[i][0], &gen[i][1]);
e[i]=(float)gen[i][0]/gen[i][1];
tot+=gen[i][0];
poz[i]=i;
}
if(tot<w) printf("-1");
else {
h=g;
while(h>1)
{ h/=2;
do{
sw=1;
for(i=1;i<g-h+1;++i)
if(e[i]<e[i+h])
{ sw=0;
float aux=e[i];
e[i]=e[i+h];
e[i+h]=aux;
poz[i]=poz[i]^poz[i+h];
poz[i+h]=poz[i]^poz[i+h];
poz[i]=poz[i]^poz[i+h];
}
} while(!sw);
}
int k=1;
while(w>0)
{ w-=gen[poz[k]][0];
consum+=gen[poz[k]][1];
k++;
}
}
printf("%d", consum);
return 0;
}