【题解】同学的等待
【题目描述】
同学们下课后去食堂,每个人都需要一段时间去点菜。
然而,某些同学点菜时间太长了。同学们对于等待很烦躁:他们希望,能尽量少的花时间等待。
(同学数<=100000),(0<=点菜耗时<=10000)
他们希望在点菜时,能排成一个次序,使得总等待时间最短(即不包括点菜人的其他所有人的等待时间)。
【输入描述】
第一行是一个数字n,表示同学的个数
接下来n个数,表示点菜的耗时
【输出描述】
一个数,表示总等待时间。
【样例输入】
6 9 1 3 5 4 2
【样例输出】
35
【参考答案】
#include <bits/stdc++.h> using namespace std; int s[100005]; long long n,totaltime=0,temptime=0; int main() { cin>>n; for(int i=0;i<n;i++) { cin>>s[i]; } sort(s,s+n); for(int i=1;i<n;i++)//第一个同学不用等待,即下标为0的同学 { temptime+=s[i-1];//前缀和迭代 totaltime+=temptime; //等待时间累加 } cout<<totaltime; return 0; }