#include <stdio.h>
#include <stdlib.h>
// 定义一个结构体来存储每个人的接水时间和原始索引
typedef struct {
int time; // 接水时间
int index; // 原始索引
} Person;
int main() {
int n;
scanf("%d", &n); // 读取人数
Person people[n]; // 定义数组存储每个人的接水时间和原始索引
for (int i = 0; i < n; i++) {
scanf("%d", &people[i].time); // 读取每个人的接水时间
people[i].index = i + 1; // 存储每个人的原始索引,从1开始计数
}
// 根据接水时间从小到大排序
for (int j = 0; j < n - 1; j++) {
for (int k = 0; k < n - j - 1; k++) {
if (people[k].time > people[k + 1].time) { // 如果前一个接水时间大于后一个,则交换
Person temp = people[k];
people[k] = people[k + 1];
people[k + 1] = temp;
}
}
}
// 计算总等待时间和平均等待时间
double totalWaitTime = 0; // 总等待时间
for (int i = 0; i < n; i++) {
totalWaitTime += people[i].time * (n - i - 1); // 第i个人的等待时间是其接水时间乘以后面还有的人数
}
double averageWaitTime = totalWaitTime / n; // 平均等待时间
// 输出排队顺序
for (int i = 0; i < n; i++) {
printf("%d ", people[i].index); // 输出排队顺序,根据原始索引
}
printf("\n"); // 换行
// 输出平均等待时间,保留两位小数
printf("%.2f\n", averageWaitTime);
return 0;
}
P1223 排队接水
最新推荐文章于 2025-03-29 10:59:17 发布