# [蓝桥杯 2020 国 ABC] 答疑
## 题目描述
有 $n$ 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。老师可以安排答疑的顺序,同学们要依次进入老师办公室答疑。
一位同学答疑的过程如下:
1. 首先进入办公室,编号为 $i$ 的同学需要 $s_{i}$ 毫秒的时间。
2. 然后同学问问题老师解答,编号为 $i$ 的同学需要 $a_{i}$ 毫秒的时间。
3. 答疑完成后,同学很高兴,会在课程群里面发一条消息,需要的时间可以忽略。
4. 最后同学收拾东西离开办公室,需要 $e_{i}$ 毫秒的时间。一般需要 $10$ 秒、$20$ 秒或 $30$ 秒,即 $e_{i}$ 取值为 $10000$、$20000$ 或 $30000$。
一位同学离开办公室后,紧接着下一位同学就可以进入办公室了。
答疑从 $0$ 时刻开始。老师想合理的安排答疑的顺序,使得同学们在课程群里面发消息的时刻之和最小。
## 输入格式
输入第一行包含一个整数 $n$,表示同学的数量。
接下来 $n$ 行, 描述每位同学的时间。其中第 $i$ 行包含三个整数 $s_{i}, a_{i}, e_{i}$,意义如上所述。
## 输出格式
输出一个整数,表示同学们在课程群里面发消息的时刻之和最小是多少。
## 样例 #1
### 样例输入 #1
```
3
10000 10000 10000
20000 50000 20000
30000 20000 30000
```
### 样例输出 #1
```
280000
```
## 提示
**【样例说明】**
按照 $1,3,2$ 的顺序答疑,发消息的时间分别是 $20000,80000,180000$ 。
**【评测用例规模与约定】**
对于 $30 \%$ 的评测用例, $1 \leq n \leq 20$ 。
对于 $60 \%$ 的评测用例, $1 \leq n \leq 200$ 。
对于所有评测用例, $1 \leq n \leq 1000,1 \leq s_{i} \leq 60000,1 \leq a_{i} \leq 1000000$, $e_{i} \in\{10000,20000,30000\}$ ,即 $e_{i}$ 一定是 $10000 、 20000 、 30000$ 之一。
蓝桥杯 2020 年国赛 A 组 H 题(B 组 H 题, C 组 J 题)。
//对输入进行排序,越小的在越前面,就能使时间累计最小
#include<bits/stdc++.h>
using namespace std;
#define int long long
struct Student{
int s,a,e,t;
};
int n,temp,sum[1010],ans;
Student stu[1010];
bool cmp(Student a,Student b){
return a.t<b.t;
}
signed main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>stu[i].s>>stu[i].a>>stu[i].e;
stu[i].t=stu[i].s+stu[i].a+stu[i].e;
}
sort(stu,stu+n,cmp);
//for(int i=0;i<n;i++)cout<<stu[i].s<<' '<<stu[i].a<<' '<<stu[i].e<<' '<<stu[i].t<<endl;
for(int i=0;i<n;i++){
if(i==0)sum[i]=stu[i].s+stu[i].a;
else{
sum[i]=sum[i-1]+stu[i-1].e+stu[i].s+stu[i].a;
}
ans+=sum[i];
}
cout<<ans;
}