只过了第一个,求助
查看原帖
只过了第一个,求助
793315
ccyhhy楼主2022/10/10 08:18
#include<bits/stdc++.h>
using namespace std;
struct gold
{
	double m;
	double v;
	double j;
};
struct gold g[1005];
int main()
{
	int i = 0;
	double n, t;
	double j1, m1, v1,sum=0,zj=0;
	cin >> n >> t;
	for (int i = 0; i < n; i++)
	{
		cin >> g[i].m >> g[i].v;
		g[i].j = 1.0*g[i].v / g[i].m*1.0;
	}
	for (int i = 0; i < n-1; i++)
	{
		for (int a = 0; a < n-i-1; a++)
		{
			if (g[a].j<g[a+1].j)
			{
				j1 = g[a].j;
				g[a].j = g[a+1].j;
				g[a+1].j = j1;
				m1 = g[a].m;
				g[a+1].m = m1;
				g[a].m = g[a+1].m;
				v1 = g[a].v;
				g[a].v = g[a+1].v;
				g[a+1].v = v1;
			}
		}
	}
	while (sum != t)
	{
		if (t - sum >= g[i].m)
		{
			sum += g[i].m;
			zj += g[i].v;
		}
		else
		{
			zj += g[i].j * (t - sum)*1.0;
			break;
		}
		if (g[i].m==0)
		{
			break;
		}
		i++;
	}
	printf("%.2f", zj);
	return 0;
}
2022/10/10 08:18
加载中...