中级光能
题目链接: 酷町堂:1251
本人样例都过不了的代码
#include<iostream>
#include<algorithm>
using namespace std;
int n,a[1005];
double sum;
bool cmp(int x,int y){
return x<y;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
sum+=a[i]*(n-i+1);
}
printf("\n%.2f",sum/n);
return 0;
}
题目:
题目描述 Description
春节将至,有N个人在一个火车票窗口前排队买票,编号1~n。一个人买完票了则离开,为使他们的等待时间最少,请找出这N个人排队的一种顺序。
输入描述 Input Description
第一行为N,第二行为这N个人的买票花费的时间t,每个数之间有一个空格。(1=<N,t<=1000)
输出描述 Output Description
输出两行,第一行为排队的顺序,第二行为这种方案下的平均等待时间(保留两位小数)。如果两人等待时间相同,则按输入顺序排序,输入**前的则排在前面。
样例输入 Sample Input
10 8 7 9 3 5 2 1 6 4 10
样例输出 Sample Output
7 6 4 9 5 8 2 1 3 10 22.00
数据范围及提示 Data Size & Hint
(当前买票人等待的时间*包括当前买票人在内的剩余人数)的累加和
如样例中第一位买票人等待的时间为1,剩余10人,则时间为1 * 10=10;第二位买票人等待的时间为2,剩余9人,则时间为2 * 9=18;。。。直到第十位买票人等待的时间为10,剩余1人,时间为10 * 1=10;将这些时间加起来再除以人数10为22.00。
求思路