社区讨论

wa *2 是不是要开 long long?

P1223排队接水参与者 5已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@mhjd220d
此快照首次捕获于
2025/11/04 00:34
4 个月前
此快照最后确认于
2025/11/04 00:34
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
struct P{
	int number;
	int time;
	int wait_time;
};
int n;
P a[1001];
int main()
{
	cin >> n;
	for (int  i=1;i<=n;i++)
	{
		cin >> a[i].time;
		a[i].number = i;
	}
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=n-i;j++)
		{
			if (a[j].time > a[j+1].time)
			{
				swap(a[j],a[j+1]);
			}
			else if (a[j].time == a[j+1].time && a[j].number > a[j+1].number)
        	{
            	swap(a[j], a[j+1]);
        	}
		}
	}

	for (int i=1;i<=n;i++)
	{
		cout << a[i].number<< ' ';
	}
	cout << '\n';
	double ave;
	int s=0;
	a[1].wait_time = 0;	//第一个人不需要等任何人
	//第二行人的等待时间 = 第一个人的节水时间 + 第一个人的等待时间(0) 
	//第三个人的等待时间 = 第二个人的等待时间 + 第二个人的节水时间 ...
	//第n个人的等待时间 = 第n-1个人的等待时间 + 第n-1个人的节水时间 
	for (int i=2;i<=n;i++) 
	{
		a[i].wait_time = a[i-1].wait_time + a[i-1].time;
	}
	//求平均等待时间 
	for (int i=1;i<=n;i++)
	{
		s += a[i].wait_time; 
	}
	ave = (double)s/n;
	printf("%.2lf",ave);
	return  0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...