#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedef struct Value {
int Gold_Weigh[101],Gold_Sum[101],Gold_Per[101];
int number;
}Val;
int main()
{
Val val;
int N, T, t, k = 0;
double Gold_Gained = 0;
scanf("%d%d", &N, &T);
for (int i = 0; i < N; i++)
{
scanf("%d%d", &val.Gold_Weigh[i], &val.Gold_Sum[i]);
val.Gold_Per[i] = val.Gold_Sum[i] / val.Gold_Weigh[i];
val.number = i;
}
for (int i = 0; i < N-1; i++)
{
for (int j = 0; j < N-1-i; j++)
{
if (val.Gold_Per[j] < val.Gold_Per[j + 1])
{
t = val.Gold_Per[j];
val.Gold_Per[j] = val.Gold_Per[j + 1];
val.Gold_Per[j + 1] = t;
t = val.Gold_Weigh[j];
val.Gold_Weigh[j] = val.Gold_Weigh[j + 1];
val.Gold_Weigh[j + 1] = t;
t = val.Gold_Sum[j];
val.Gold_Sum[j] = val.Gold_Sum[j + 1];
val.Gold_Sum[j + 1] = t;
t = val.number;
val.number = val.number;
val.number = t;
}
}
}
while (T > 0)
{
if (T >= val.Gold_Weigh[k])
{
Gold_Gained += val.Gold_Sum[k];
T -= val.Gold_Weigh[k];
k++;
if (k == N)
break;
}
else
{
Gold_Gained += val.Gold_Per[k] * T;
T = 0;
}
}
printf("%.2lf", Gold_Gained);
return 0;
}
也可以分享一下后面四个的样例,谢谢