有 n 个人排队到 1 个水龙头处打水,第 i 个人装满水桶所需的时间是 ti,请问如何安排他们的打水顺序才能使所有人的等待时间之和最小?
输入格式第一行包含整数 n。
第二行包含 n 个整数,其中第 i 个整数表示第 i 个人装满水桶所花费的时间 ti。
输出格式输出一个整数,表示最小的等待时间之和。
数据范围1≤n≤105,
1≤ti≤104
7 3 6 1 4 2 5 7输出样例:
56代码:
#includeusing namespace std; const int N = 1e5 + 10; int t[N]; typedef long long LL; int main() { int n; cin >> n; for (int i = 0; i < n; i++) cin >> t[i]; sort(t, t + n); reverse(t, t + n); LL res = 0; for (int i = 0; i < n; i++) res += t[i] * i; cout << res << endl; return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)