发气球系统

问题 J: 发气球

时间限制: 1 Sec  内存限制: 128 MB
[提交] [状态]

题目描述

今天是因特网程序设计全国大赛(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。


输出

对每一个应该获得气球的上传,请输出"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."于一行(不包含引号),让工作人员知道气球发完,可以去吃点心了。


样例输入 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其中一个
注意如果该组题已经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.
",a[i].p,a[i].team,a[i].time);
                y[a[i].team][a[i].p-'A']=1;
            }
        }
    }
    printf("Go get snacks.");
} 


 
原文地址:https://www.cnblogs.com/lipu123/p/12264008.html