問題A:【例6.1】並んで水を受け取る

1635 ワード

タイトルの説明
nがある
n
 人は1つの蛇口の前で並んで水を受け取って、もし一人一人が水を受け取る時間がTiならば
Ti
 ,プログラミングしてこのnを見つけてください
n
 個人が並ぶ順番で、n
n
 個人の平均待ち時間は最小です.
入力
共に2行,第1挙動n(1≦n≦1000)
n(1≤n≤1000)
 ;2行目はそれぞれ1行目を表す
1
 個人から第n
n
 個人1人あたりの給水時間T 1,T 2,...,Tn
T1,T2,…,Tn
 ,各データ間に1
1
 を選択します.
しゅつりょく
2行あり、第1の動作はキュー順、すなわち1
1
 nまで
n
 の配列.第2の挙動この配列スキームにおける平均待ち時間(出力結果は小数点以下2桁まで正確である).
サンプル入力
10	

56 12 1 99 1000 234 33 55 99 812

サンプル出力
3 2 7 8 1 4 9 6 10 5

291.90

#include
using namespace std;
int main(){ int n,a[1001][2],sum=0;
cin>>n;
for (int i=1;i<=n;i++) { a[i][0]=i; cin>>a[i][1]; } for (int i=0;i for (int j=1;j if (a[j][1]>a[j+1][1])  { swap(a[j][1],a[j+1][1]); swap(a[j][0],a[j+1][0]); } for (int i=1;i<=n;i++) { if (i!=1) cout< cout< sum+=(n-i)*a[i][1]; } cout.precision(2); cout< return 0;}