蓝桥杯备考:模拟算法之排队接水
简单的模拟就行了,把他们的时间排序,时间最少的先上,然后算出每个人的等待时间的平均值
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e3+10;
int n;
double sum;
double ret;
struct node{
int num;
int t;
}a[N];
bool cmp(const node& x1,const node& x2)
{
return x1.t<x2.t;
}
int main()
{
cin >> n;
for(int i = 1;i<=n;i++)
{
cin >> a[i].t;
a[i].num = i;
}
sort(a+1,a+1+n,cmp);
for(int i = 1;i<=n;i++)
{
cout << a[i].num << " ";
}
for(int i = 2;i<=n;i++)
{
sum+=a[i-1].t;
ret+=sum;
}
ret/=n;
cout << endl;
printf("%.2lf",ret);
}