HDU - 6297 CCPC直播
在比特镇举行的中国大学生程序设计竞赛CCPC(China Collegiate Programming Contest)开始啦!这次比赛中加入了现场视频直播,而在直播屏幕的左下角,会显示评测队列。
比特镇的科技水平并不发达,直播分辨率并不高。准确地说,每个评测记录将被显示在11
行3838
列的像素格上。一条评测记录由44
个部分组成,从左往右依次为排名(33
像素),队名(1616
像素),题号(44
像素),评测情况(1212
像素)。相邻两个部分之间由11
像素的分隔线||
分开。其中,排名右对齐显示,队名左对齐显示,长度不足时用空格补齐。题号一定是44
位正整数,因此恰好占据44
像素。评测情况则比较复杂,它由两侧的括号[][]
以及中间1010
像素组成。
样例第一行表示排名第1919
的队伍qqqqq_University提交了题目10011001
,已经通过了30%30%
的测试点,故左对齐显示33
个X。
样例第二行表示排名第125125
的队伍quailty_U_2提交了题目10021002
,评测结果为WA,故居中显示WA,左边留44
像素空格。
样例第三行需要居中显示TLE,左边同样留44
像素空格。
样例第四行这支队伍是全场第一个通过10031003
的,故在AC后加上字符∗∗
来特殊标注。
请写一个程序,对于每条评测记录产生直播信息。Input第一行包含一个正整数T(1≤T≤1000)T(1≤T≤1000)
,表示评测记录的数量。
接下来TT
行,每行首先是一个正整数rank(1≤rank≤400)rank(1≤rank≤400)
,表示队伍的排名。
接下来一个长度不超过1616
的字符串SS
,表示队名,SS
仅由大小写字母、数字以及下划线"_"组成。
接下来一个正整数prob(1001≤prob≤1013)prob(1001≤prob≤1013)
,表示题号。
接下来一个字符串T(T∈{Running,AC,WA,TLE,MLE,RTE,CE,OLE,PE,FB})T(T∈{Running,AC,WA,TLE,MLE,RTE,CE,OLE,PE,FB})
,表示评测状态,除RunningRunning
外均表示评测结束。若为RunningRunning
,则还会输入一个正整数p(1≤p≤9)p(1≤p≤9)
,表示已经通过了p×10%p×10%
的测试点。若为FBFB
,则表示全场第一个通过该题,应显示AC∗AC∗
。Output对于每条评测记录,按要求输出一行一个长度为3838
的字符串,即直播显示效果。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 ]
#include <cstdio> #include <iostream> #include <string> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #include <vector> #include <map> using namespace std; int t, ran, prob, p; string s, T; int main() { scanf("%d", &t); while(t--) { scanf("%d", &ran); cin>>s; int len = s.size(); if(len<16) for(int i = len; i<16; i++) s += " "; scanf("%d", &prob); cin>>T; string miao, si; // char miao[18]; if(T == "Running") { scanf("%d", &p); for(int i = 0; i<p; i++) miao += "X";//后面输出空格 for(int i = p; i<10; i++) miao += " "; } else if(T == "FB") { for(int i = 0; i<4; i++) si += " "; si += "AC*"; int le = si.size(); for(int i = le; i<10; i++) si +=" "; } else if(T == "TLE") { for(int i = 0; i<4; i++) si += " "; si += "TLE"; int le = si.size(); for(int i = le; i<10; i++) si +=" "; } else if(T == "AC") { for(int i = 0; i<4; i++) si += " "; si += "AC"; int le = si.size(); for(int i = le; i<10; i++) si +=" "; } else if(T== "WA") { for(int i = 0; i<4; i++) si += " "; si += "WA"; int le = si.size(); for(int i = le; i<10; i++) si +=" "; } else if(T== "MLE") { for(int i = 0; i<4; i++) si += " "; si += "MLE"; int le = si.size(); for(int i = le; i<10; i++) si +=" "; } else if(T== "RTE") { for(int i = 0; i<4; i++) si += " "; si += "RTE"; int le = si.size(); for(int i = le; i<10; i++) si +=" "; } else if(T== "CE") { for(int i = 0; i<4; i++) si += " "; si += "CE"; int le = si.size(); for(int i = le; i<10; i++) si +=" "; } else if(T== "OLE") { for(int i = 0; i<4; i++) si += " "; si += "OLE"; int le = si.size(); for(int i = le; i<10; i++) si +=" "; } else if(T== "PE") { for(int i = 0; i<4; i++) si += " "; si += "PE"; int le = si.size(); for(int i = le; i<10; i++) si +=" "; } if(ran/100 == 0)//输出排名 { printf(" "); if(ran/10 == 0) printf(" "); } printf("%d|", ran); cout<<s<<"|"; printf("%d|[", prob); if(T == "Running")//输出状态 { cout<<miao<<"]"<<'\n'; } else { cout<<si<<"]"<<'\n'; } } return 0; }