ACM 训练日志记录 · 思考 · 成长 提交 / 修改记录
郭一鸣 / 题目列表训练档案
导出

P1223 排队接水

来源:洛谷 ★ 1000

本题活力0.29按难度、完成结果与训练证据估算

算法如山行则将至

题目描述

按接水时间从小到大排序,相同时间编号小的排前,以最小化平均等待时间。

代码

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct pe{
    int t,id;
}a[1010];
bool cmp(pe x,pe y)
{
    if(x.t==y.t)return x.id<y.id;
    return x.t<y.t;
}
int main()
{
    int n;cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i].t;
        a[i].id=i;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++)
    {
        cout<<a[i].id;
        if(i<n)cout<<" ";
    }
    cout<<endl;
    long long sum=0;
    long long now=0;
    for(int i=1;i<=n;i++)
    {
        sum+=now;
        now+=a[i].t;
    }
    double aver=(double)sum/n;
    printf("%.2f\n",aver);
    return 0;
}