【题解】同学的等待
【题目描述】
同学们下课后去食堂,每个人都需要一段时间去点菜。
然而,某些同学点菜时间太长了。同学们对于等待很烦躁:他们希望,能尽量少的花时间等待。
(同学数<=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;
}扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

