#include<stdio.h>
#include<malloc.h>
int main()
{
int n=0,x=0;
scanf("%d%d", &n, &x);
int** arr = (int**)calloc(n, sizeof(int*));
double* min = (double*)calloc(n, sizeof(double));
for (int i = 0; i < n; i++)
{
arr[i] = (int*)calloc(2, sizeof(int));
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < 2; j++)
{
scanf("%d", &arr[i][j]);
}
}
for (int i = 0; i < n; i++)
{
min[i] = (double)arr[i][1] / arr[i][0];
}
double y = 0;
int z = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - 1-i; j++)
{
if (min[j] > min[j + 1])
{
y = min[j + 1];
min[j+ 1] = min[i];
min[j] = y;
z = arr[j +1][0];
arr[j+1 ][0] = arr[j][0];
arr[j][0] = z;
z = arr[j+1 ][1];
arr[j +1][1] = arr[j][1];
arr[j][1] = z;
}
}
}
double sum;
for(n-1;n-1>=0&&x>0;n--)
{
if (x <= arr[n-1][0])
{
sum += x *( (double)arr[n-1][1] / arr[n-1][0]);
}
else
{
sum += arr[n - 1][1];
x -= arr[n - 1][0];
}
}
printf("%.2lf", sum);
free(min);
for(int i=0;i<n;i++)
{
free(arr[i]);
}
free(arr);
}
```c
求大佬帮忙看看。