HDU 6297 CCPC直播

CCPC直播

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)
Total Submission(s): 1337    Accepted Submission(s): 550

Problem Description

在比特镇举行的中国大学生程序设计竞赛CCPC(China Collegiate Programming Contest)开始啦!这次比赛中加入了现场视频直播,而在直播屏幕的左下角,会显示评测队列。

比特镇的科技水平并不发达,直播分辨率并不高。准确地说,每个评测记录将被显示在1行38列的像素格上。一条评测记录由4个部分组成,从左往右依次为排名(3像素),队名(16像素),题号(4像素),评测情况(12像素)。相邻两个部分之间由1像素的分隔线|分开。其中,排名右对齐显示,队名左对齐显示,长度不足时用空格补齐。题号一定是4位正整数,因此恰好占据4像素。评测情况则比较复杂,它由两侧的括号[]以及中间10像素组成。

样例第一行表示排名第19的队伍qqqqq_University提交了题目1001,已经通过了30%的测试点,故左对齐显示3个X。

样例第二行表示排名第125的队伍quailty_U_2提交了题目1002,评测结果为WA,故居中显示WA,左边留4像素空格。

样例第三行需要居中显示TLE,左边同样留4像素空格。

样例第四行这支队伍是全场第一个通过1003的,故在AC后加上字符∗来特殊标注。

请写一个程序,对于每条评测记录产生直播信息。

Input

第一行包含一个正整数T(1≤T≤1000),表示评测记录的数量。

接下来T行,每行首先是一个正整数rank(1≤rank≤400),表示队伍的排名。

接下来一个长度不超过16的字符串S,表示队名,S仅由大小写字母、数字以及下划线"_"组成。

接下来一个正整数prob(1001≤prob≤1013),表示题号。

接下来一个字符串T(T∈{Running,AC,WA,TLE,MLE,RTE,CE,OLE,PE,FB}),表示评测状态,除Running外均表示评测结束。若为Running,则还会输入一个正整数p(1≤p≤9),表示已经通过了p×10%的测试点。若为FB,则表示全场第一个通过该题,应显示AC∗。

Output

对于每条评测记录,按要求输出一行一个长度为38的字符串,即直播显示效果。

Sample Input

5
19 qqqqq_University 1001 Running 3
125 quailty_U_2 1002 WA
4 quailty_U_3 1003 TLE
1 quailty_U_4 1003 FB 2 qqqqq 1001 AC

Sample Output

.19|qqqqq_University|1001|[XXX ]
125|quailty_U_2 |1002|[ WA ]
…4|quailty_U_3 |1003|[ TLE ]
…1|quailty_U_4 |1003|[ AC* ]
…2|qqqqq |1001|[ AC ]

Source

"字节跳动杯"2018中国大学生程序设计竞赛-女生专场

Recommend

liuyiding   |   We have carefully selected several similar problems for you:  6447 6446 6445 6444 6443

题解

根据题目进行模拟就好,输出那部分由于 markdown 编辑器我不知道咋弄= =,所以用…代替了。代码如下:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std ;

char ch[5] = { ' ' , '|' , '[' , ']' , 'X' } ;
string str = "AC*" ;

int main(){
    int t ;
    cin >> t ;
    while ( t -- ){
        int problem_num ;
        string team_rank , team_name , state ;
        cin >> team_rank >> team_name >> problem_num >> state ;
        if ( state == "Running" ){
            int point_num ;
            cin >> point_num ;
            for ( int i = 0 ; i < 3 - team_rank.size() ; i ++ ){
                cout << ch[0] ;
            }
            cout << team_rank << ch[1] << team_name ;
            for ( int i = 0 ; i < 16 - team_name.size() ; i ++ ){
                cout << ch[0] ;
            }
            cout << ch[1] << problem_num << ch[1] << ch[2] ;
            for ( int i = 0 ; i < point_num ; i ++ ){
                cout << ch[4] ;
            }
            for ( int i = 0 ; i < 10 - point_num ; i ++ ){
                cout << ch[0] ;
            }
            cout << ch[3] << endl ;
        }else{
            for ( int i = 0 ; i < 3 - team_rank.size() ; i ++ ){
                cout << ch[0] ;
            }
            cout << team_rank << ch[1] << team_name ;
            for ( int i = 0 ; i < 16 - team_name.size() ; i ++ ){
                cout << ch[0] ;
            }
            cout << ch[1] << problem_num << ch[1] << ch[2] ;
            for ( int i = 0 ; i < 4 ; i ++ ){
                cout << ch[0] ;
            }
            if ( state == "FB" ){
                cout << str ;
                for ( int i = 0 ; i < 6 - str.size() ; i ++ ){
                    cout << ch[0] ;
                }
                cout << ch[3] << endl ;
            }
            else {
                cout << state ;
                for ( int i = 0 ; i < 6 - state.size() ; i ++ ){
                    cout << ch[0] ;
                }
                cout << ch[3] << endl ;
            }
        }
    }
    return 0 ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值