Pagini recente » Cod sursa (job #148060) | Cod sursa (job #534541) | Cod sursa (job #2765934) | Cod sursa (job #800109) | Cod sursa (job #1018303)
#include <cstdio>
#include <algorithm>
struct c
{
int energie,cost;
float raport;
} costuri[1001];
void sortare(int f, int l)
{
float pivot = costuri[(f+l)/2].raport;
int i = f;
int j = l;
while(i<=j)
{
while(costuri[i].raport > pivot)
i++;
while(costuri[j].raport<pivot)
j--;
if(i<=j)
{
c aux = costuri[i];
costuri[i] = costuri[j];
costuri[j] = aux;
i++;
j--;
}
}
if(j>f)
sortare(f,j);
if(i<l)
sortare(i,l);
}
int main()
{
int g, w;
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%d",&g);
scanf("%d",&w);
for(int i =0; i<g; i++)
{
scanf("%d%d",&costuri[i].energie,&costuri[i].cost);
costuri[i].raport = (costuri[i].energie*1.0)/costuri[i].cost;
}
sortare(0,g-1);
int energ = 0,cost =0 ;
for(int i =0; i<g; i++)
{
energ+=costuri[i].energie;
cost+=costuri[i].cost;
if(energ>=w)
{
printf("%d",cost);
break;
}
}
printf("%d",-1);
}