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; }