ぎょうれつせつぞく

5847 ワード

【タイトル説明】
n人が蛇口の前に並んで水を受け取っています.もし一人一人が水を受け取る時間がTiであれば、プログラミングしてn人が並んでいる順序を見つけて、n人の平均待ち時間を最小限に抑えてください.
【入力】
共に2行、第1の挙動n(1≦n≦1000);2行目はそれぞれ11人目からn人目までの1人あたりの給水時間T 1,T 2,...,Tnの各データの間に11個のスペースがあることを示す.
【出力】
2行あり、第1の動作は1〜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






( )

( , )
















sort

sort(a+1,a+1+n)
a[1]~a[n] ,
sort ,
 1 #include
 2 #include
 3 using namespace std;
 4 int main()
 5 {
 6     int n,m[1100]={0};
 7     double t[1100]={0},a[1100]={0},s[1100]={0},ans=0;
 8     scanf("%d",&n);
 9     for(int i=1;i<=n;i++)
10     {
11         scanf("%lf",&t[i]);
12         a[i]=t[i];
13     }
14     sort(t+1,t+n+1);
15     for(int i=1;i<=n;i++)
16         for(int j=1;j<=n;j++)
17             if(t[i]==a[j]&&m[j]==0)
18             {
19                 printf("%d ",j);
20                 m[j]=1;
21                 break;
22             }
23     printf("
"); 24 for(int i=1;i) 25 { 26 s[i]=t[i]+s[i-1]; 27 ans+=s[i]; 28 } 29 printf("%0.2f",ans/n); 30 return 0; 31 }

毎日カードを打つO(∩∩)O~
転載先:https://www.cnblogs.com/sxy2004/p/11483742.html