@[studentzx](/user/619944) 读入完成后根据w[i].值排序(用sort),相等则按照序号,先输出序号;然后结构体开个y,从2开始,a[i].y加上a[i-1].y和a[i-1].x,为等待时间,定义sum加上a[i].y(sum为double)。最后保留两位小数输出sum除以n(n为double)就AC了。
by William_wyx @ 2022-02-12 16:49:56
AC代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
struct per{
int x,nu,y;
}a[1010];
bool cmp(per a,per b){//排序
if(a.x!=b.x)return a.x<b.x;//如果序号不一样按照接水时间排序
else return a.nu<b.nu;//否则按照序号排序
}int main(){
int n,i;
double sum=0.0;
cin>>n;
for(i=1;i<=n;i++){
cin>>a[i].x;//输入接水时间
a[i].nu=i;//标记序号
}sort(a+1,a+1+n,cmp);//排序
for(i=1;i<=n;i++)cout<<a[i].nu<<" ";//输出序号
a[1].y=0;//第一人的等待时间为0
for(i=2;i<=n;i++){
a[i].y=a[i-1].y+a[i-1].x;//后面每个人的等待时间为前面人的等待时间+前一个人的接水时间
sum=sum+a[i].y;//sum加上每个人的等待时间
}cout<<endl<<fixed<<setprecision(2)<<sum/n;//既然是平均那么就除以n
return 0;
}
```
by William_wyx @ 2022-02-12 16:59:32