问题标题: 酷町堂:1251 排队买票 救救我!!!

0
1
已解决
张皓然
张皓然
中级光能
中级光能

题目链接: 酷町堂: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。

求思路


0
已采纳
刘伯林
刘伯林
高级守护
高级守护

1.读入

2.排序

3.算平均值

4.输出

PS:数组一定要定义成结构体哦!

0
0
0
0
我要回答