STL 2133 排队接水

2133 排队接水

n个人一起排队接水,第i个人需要b[i]的时间来接水。(1<=n<=1000,0<=b[i]<=1000)

同时只能有一个人接水,正在接水的人和没有接水的人都需要等待。

完成接水的人会立刻消失,不会继续等待。

你可以决定所有人接水的顺序,并希望最小化所有人等待时间的总和。

 

输入

第一行一个整数n
接下来n行,每行一个整数表示b[i]

输出

一行一个整数,表示所有人等待时间的总和的最小值

输入样例

3
1
2
3

输出样例

10
#include <iostream>
#include <algorithm>
using namespace std;

int b[1010];
int n, now = 0, ans = 0;

int main() {
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        cin >> b[i];
    }
    sort(b + 1, b + 1 + n);
    for (int i = 1; i <= n; ++i) {
        ans += b[i] * (n - now);
        now++;
    }
    cout << ans << endl;
    
    return 0;
}
View Code

 

posted @ 2021-06-17 14:14  tianluman  阅读(67)  评论(0编辑  收藏  举报