Cod sursa(job #295764)
#include<stdio.h>
#include<stdlib.h>
#define IN "energii.in","r",stdin
#define OUT "energii.out","w",stdout
struct pct{
int energie,cost;
double ef;
};
int G,W,costuri;
pct v[1005];
void solve()
{
for(int i=1;i<=G && W>0;++i)
{
if(W>0)
{
W-=v[i].energie;
costuri+=v[i].cost;
}
}
printf("%d\n",costuri);
}
int cmp(const void *q,const void *p)
{
pct x=*(pct*)q,y=*(pct*)p;
if(x.ef<y.ef) return -1;
else if(x.ef>y.ef) return 1;
return 0;
}
int main()
{
freopen(IN);
freopen(OUT);
scanf("%d%d",&G,&W);
for(int i=1;i<=G;++i)
{
scanf("%d%d",&v[i].energie,&v[i].cost);
v[i].ef=(double)v[i].cost/v[i].energie;
}
qsort(v+1,G,sizeof(v[0]),cmp);
solve();
return 0;
}