洛谷 P1223 排隊接水
阿新 • • 發佈:2017-11-18
art iostream font 水龍頭 題目 -a sort 一行 輸出格式
P1223 排隊接水
題目描述
有n個人在一個水龍頭前排隊接水,假如每個人接水的時間為Ti,請編程找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。
輸入輸出格式
輸入格式:
輸入文件共兩行,第一行為n;第二行分別表示第1個人到第n個人每人的接水時間T1,T2,…,Tn,每個數據之間有1個空格。
輸出格式:
輸出文件有兩行,第一行為一種排隊順序,即1到n的一種排列;第二行為這種排列方案下的平均等待時間(輸出結果精確到小數點後兩位)。
輸入輸出樣例
輸入樣例#1: 復制10 56 12 1 99 1000 234 33 55 99 812輸出樣例#1: 復制
3 2 7 8 1 4 9 6 10 5
291.90
說明
n<=1000
ti<=1e6,不保證ti不重復
當ti重復時,按照輸入順序即可(sort是可以的)
思路:排序
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n; double ans; struct nond{ intt,id; }v[1011]; int cmp(nond a,nond b){ return a.t<b.t; } int main(){ //freopen("lpp.txt","r",stdin); scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&v[i].t); v[i].id=i; } sort(v+1,v+1+n,cmp); for(int i=1;i<=n;i++){ cout<<v[i].id<<" "; ans+=v[i].t*(n-i); } printf("\n%.2lf",ans*1.0/n*1.0); }
洛谷 P1223 排隊接水