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
Recommend
liuyiding | We have carefully selected several similar problems for you: 6447 6446 6445 6444 6443
题解
根据题目进行模拟就好,输出那部分由于 markdown 编辑器我不知道咋弄= =,所以用..代替了。代码如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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 ;
}