发气球系统
题目描述
今天是因特网程序设计全国大赛(NPSC)的决赛!比赛中有一样不可或缺的东西,就是「气球」。
决赛中总共有28支队伍,参赛的队伍要在240分钟内面对7道问题。
比赛中上传的每一份程序代码,经过评测后会有下列信息:Run ID(这份程序代码是整个比赛中第几个上传的,从 1 开始编号)、Submission Team(这份程序代码是由哪一队上传的,队伍被编号为 1 至 28)、Submission Time(这份程序代码是在第几分钟上传的,可能的数据是整数0至239)、Problem ID(这份程序代码是针对哪一题上传的,可能的数据会是大写字母A到G)、
Verdict(这份程序代码的评测结果,可能的数据为AC、WA、TLE跟RTE其中之一)。
当一支队伍,在比赛中首次解开某一题时(也就是上传程序代码至该题并得到AC的 Verdict),该队伍就能在这个时间获得一颗代表该题的气球。但若该次上传的 Submission Time 大于或等于180,那么就不会拿到任何气球,因为此时计分版已经封榜了。
现在请你帮忙撰写一个气球服务器,我们将给你整场比赛中共 N 个上传的信息,请你印出指令指示现场的工作人员发送气球。
输入
第一行包含一个整数 N,代表决赛中总共有 N 个上传记录。
接下来 N 行,每行都包含三个整数 Ai,Bi,Ci 和两个字符串 Pi,Vi,依序表示这个上传的 Run ID、Submission Team、Submission Time、Problem ID 和 Verdict。
接下来 N 行,每行都包含三个整数 Ai,Bi,Ci 和两个字符串 Pi,Vi,依序表示这个上传的 Run ID、Submission Team、Submission Time、Problem ID 和 Verdict。
输出
对每一个应该获得气球的上传,请输出"Send balloon of <Problem ID> to team <Team> at time <Time>."于一行(不包含引号),其中的<Problem ID>为该队解开的题目、<Team>为获得气球的队伍、<Time>为该上传的时间,来表示一个发送气球的指令。
请注意发送气球的指令要按照 Run ID 由小到大依序印出,如果一个获得气球的上传是Run ID 2,而另一个是 Run ID 5,那么 Run ID 2的发送气球的指令一定要印在比较前面。
在输出所有发送气球的指令后,请输出"Go get snacks."于一行(不包含引号),让工作人员知道气球发完,可以去吃点心了。
请注意发送气球的指令要按照 Run ID 由小到大依序印出,如果一个获得气球的上传是Run ID 2,而另一个是 Run ID 5,那么 Run ID 2的发送气球的指令一定要印在比较前面。
在输出所有发送气球的指令后,请输出"Go get snacks."于一行(不包含引号),让工作人员知道气球发完,可以去吃点心了。
样例输入 Copy
10
1 1 1 A TLE
2 1 10 A AC
3 2 10 A AC
4 2 100 A AC
5 1 155 G AC
6 1 166 A WA
7 1 177 A RTE
8 10 179 C AC
9 11 180 C AC
10 28 239 B AC
样例输出 Copy
Send balloon of A to team 1 at time 10.
Send balloon of A to team 2 at time 10.
Send balloon of G to team 1 at time 155.
Send balloon of C to team 10 at time 179.
Go get snacks.
提示
【数据规模】
• 1 ≤ N ≤ 105
• Ai = i,该 N 行中的 Ai 依序为1,2,3,...N
• 1 ≤ Bi ≤ 28
• 0 ≤ Ci ≤ 239
• Ci ≤ Cj ∀i ≤ j,该 N 行每一个 Cj 都大于或等于前面每一行的 Ci (∀任意的意思,数学符号)
• Pi 为A、B、C、D、E、F、G其中一个
• Vi 为AC、WA、TLE、RTE其中一个
• 1 ≤ N ≤ 105
• Ai = i,该 N 行中的 Ai 依序为1,2,3,...N
• 1 ≤ Bi ≤ 28
• 0 ≤ Ci ≤ 239
• Ci ≤ Cj ∀i ≤ j,该 N 行每一个 Cj 都大于或等于前面每一行的 Ci (∀任意的意思,数学符号)
• Pi 为A、B、C、D、E、F、G其中一个
• Vi 为AC、WA、TLE、RTE其中一个
注意如果该组题已经AC了,再提交一边即使AC了也不能给他发气球
就是设一个二维数组int y[100][100];//某个组的某个题的状态
AC代码:
#include<cstdio> #include<iostream> #include<algorithm> #include<map> #include<bits/stdc++.h> using namespace std; typedef long long ll; inline int read() { int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } const int maxn=1e5+10; struct node{ int flag; int team; int time; char p; string zhuangtai; }a[maxn]; int y[100][100];//某个组的某个题的状态 int n; void inint(){ cin>>n; } int main(){ inint(); for(int i=0;i<n;i++){ cin>>a[i].flag>>a[i].team>>a[i].time>>a[i].p>>a[i].zhuangtai; } for(int i=0;i<n;i++){ if(a[i].time>=180){ break; } if(a[i].zhuangtai=="AC"){ if(y[a[i].team][a[i].p-'A']==1){ continue; } else{ printf("Send balloon of %c to team %d at time %d.\n",a[i].p,a[i].team,a[i].time); y[a[i].team][a[i].p-'A']=1; } } } printf("Go get snacks."); }