p2240
查看原帖
p2240
1189413
PURE_LOVE楼主2023/11/29 22:49
#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
求大佬帮忙看看。
2023/11/29 22:49
加载中...