#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
struct treasure
{
int w;
int v;
double price;
}
a[100000];
bool cmp(struct treasure t1,struct treasure t2)
{
return t1.price > t2.price;
}
int main()
{
int n,i;
int c;
double price;
double sum;
while(scanf("%d %d",&n,&c) != EOF)
{
for(i=0;i<n;i++)
{
scanf("%d %d",&a[i].w,&a[i].v);
price = (double)a[i].v/a[i].w;
a[i].price = price;
}
sort(a,a+n,cmp);
sum = 0;
for(i=0;i<n && c != 0;i++)
{
if(c >= a[i].w)
{
sum += a[i].v;
c -= a[i].w;
}
else
{
sum += (double) c*a[i].v/a[i].w;
c = 0;
}
}
printf("%d\n",(int)(sum+0.5));
}
return 0;
}
http://ac.jobdu.com/problem.php?id=1399