原题链接:
题解:
为了使得总的等待时间最小,我们肯定是要让花费时间小的排在前面,这样子对后面人造成的等待时间之和最小。
代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n;
int v[N], sum[N];
long long res;
int main() {
cin >> n;
for (int i = 1;i <= n;i++) cin >> v[i];
sort(v + 1, v + 1 + n);
for (int i = 1;i <= n;i++) sum[i] = sum[i - 1] + v[i];
for (int i = 1;i < n;i++) res += sum[i];
cout << res;
}