問題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桁まで正確である).
サンプル入力
サンプル出力
#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;}
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;}