望你没有因此而功亏一篑过······
花开不是为了花落,而是为了更加灿烂······
最初拥有的只是理想和自信,但所有的一切都从这里交错着生长,在努力与汗水铺成的路上走下去不会是错误的选择——至少你为此喜怒哀乐过······
题目描述
PION2202 的选手代码公布了。作为一个连续编写了十年迷惑行为大赏的人,你当然是要抢先把代码中的各种事迹发出来啦。
首先关注的肯定是大家的文件输入输出有没写对。你已经让小 E 把每道题的题目名称和每位选手的 freopen
语句整理出来了。
PION2202 一共有 m 道题,有 n 位选手参与。你决定把选手分成三类:
- 普通人:最正常不过的
freopen
语句; - 见祖宗人:被注释的
freopen
语句; - 乐子人:其他形式的
freopen
语句。
形式化地,普通人的所有题目的 freopen
语句都应该恰好是
freopen("<title>.in","r",stdin);
freopen("<title>.out","w",stdout);
其中的 <title>
应替换成对应的题目名称。
见祖宗人的 freopen
语句中存在至少一道题的至少一行语句以 //freopen(
开头,以 );
结尾。
如果一位选手的 freopen
语句不满足上面两种情况,则称这位选手为乐子人。
你需要判断每位选手是普通人,见祖宗人还是乐子人。
输入格式
第一行一个正整数 T,表示子任务编号。
第二行两个正整数 n,m,分别表示选手数和题目数。
接下来 m 行,每行包含一个仅由小写字母构成的字符串,其中第 i 行表示第 i 道题目的题目名称。保证题目名称的长度在 11 到 1010 之间。
接下来n×(2m+1) 行,在每 2m+1 行中,第一行为空行,后 2m 行表示一位选手的所有题目的 freopen
语句,按照题目顺序给出。前两行为第一题的 freopen
语句,依次类推,最后两行为最后一题的 freopen
语句。
保证所有的 freopen
语句的每个字符的 ASCII 码均在 33 到126 之间,即不含空格等不可见字符。
保证每一行 freopen
语句的长度在 11到 100 之间。
输出格式
输出 n 行,其中第 i 行表示第 i 位选手的分类。
如果是普通人,就要祝他 RP++,所以就输出一行 PION2202 RP++.
。
如果是见祖宗人,那就只好输出一行 Wrong file operation takes you to your ancestors along with your 3 years' efforts on OI.
。
如果是乐子人,就祝他在玩得开心的同时注意不要弄错了,于是输出一行 Good luck and have fun.
。
输入输出样例
输入 #1
3 4 4 tnalp woem kcarrab hctam freopen("tnalp.in","r",stdin); freopen("tnalp.out","w",stdout); freopen("woem.in","r",stdin); freopen("woem.out","w",stdout); freopen("kcarrab.in","r",stdin); freopen("kcarrab.out","w",stdout); freopen("hctam.in","r",stdin); freopen("hctam.out","w",stdout); freopen("tnalp.in","r",stdin); freopen("tnalp.out","w",stdout); //freopen("woem.in","r",stdin); freopen("woem.out","w",stdout); freopen("kcarrab.in","r",stdin); //I_AK_IOI!!! freopen("hctam.in","r",stdin); freopen("hctam.out","w",stdout); freopen("tnalp.in","r",stdin); freopen("tnalp.out","w",stdout) freopen("owem.in","r",stdin); freopen("woem.out","w",stdout); freopen("kcarrab.in","r",stdout); freopen("kcarrab.out","w",stdin); freopen("hctam.out","w",stdout); freopen("hctam.in","r",stdin); freopen("tnalp.in","r",stdin);//I_LOVE_CCF freopen("tnalp.out","w",stdout); freopen("woem.in","r",stdin);//I_HATE_THIS freopen("woem.out","w",stdout); freopen("kcarrab.in"/*I_FORGET_HOW_TO_FIND_BRIDGES!!!!!!*/,"r",stdin); freopen("kcarrab.out","w",stdout); freopen("hctam.in","r",stdin);//I_CAN_GET_ONLY_8PTSqwq freopen("hctam.out","w",stdout);
输出 #1
PION2202 RP++. Wrong file operation takes you to your ancestors along with your 3 years' efforts on OI. Good luck and have fun. Good luck and have fun.
说明/提示
【样例解释】
第一位选手所有的 freopen
语句都很正常,所以是普通人。
第二位选手注释了题目 woem
的输入文件语句,所以是见祖宗人。虽然该选手在题目 kcarrab
中有乐子行为但由于已经满足了见祖宗人的条件,所以该选手被分类为见祖宗人。
第三位选手四道题的 freopen
语句都不是正常的。tnalp
的输出文件语句少了分号;woem
被打成了 owem
;打反了 kcarrab
一题中的 stdin
和 stdout
;交换了 hctam
的两个语句的顺序。在本题中算作乐子人。
第四位选手的 freopen
语句虽然能够正常工作,但是因为与正常的 freopen
语句不同而在本题中被算作乐子人。
【数据范围】
本题采用捆绑测试。
子任务 1(30 分):T=1。m=1 且题目名称为 yxalag
。但是,如果你输出 No, general!
是不能得到分数的。
子任务 2(30 分):T=2。保证没有见祖宗人。
子任务 3(40 分):T=3。无特殊性质。
对于 100%100% 的数据:
保证 1≤T≤3。
保证1≤n≤1000。
保证 1≤m≤4。
保证题目名称的长度在 11到10 之间。
保证每一行 freopen
语句的长度在 11到100 之间。
看似很水,实则很补水
#include<bits/stdc++.h>
using namespace std;
const int N=10;
string a[N][2];//存储所有题目的正常freopen语句
signed main(){
int t,n,m;
cin>>t>>n>>m;
for(int i=1;i<=m;i++){
string b;
cin>>b;
a[i][0]="freopen(\""+b+".in\",\"r\",stdin);";//拼接freopen输入语句
a[i][1]="freopen(\""+b+".out\",\"w\",stdout);";//拼接freopen输出语句
}
while(n--){
int g=2;//g=0时表示乐子人,g=1时表示见祖宗人,g=2时表示普通人
for(int i=1;i<=m;i++){
string c,d;
cin>>c>>d;
string e=c.substr(0,10),f=d.substr(0,10);//e表示c的前10个字符,f表示d的前10个字符
if(g!=1){
if(e=="//freopen("&&c[c.size()-2]==')'&&c[c.size()-1]==';'||f=="//freopen("&&d[d.size()-2]==')'&&d[d.size()-1]==';'){//如果freopen语句以“//freopen(”开头,以“);”结尾
g=1;
}
else if(c!=a[i][0]||d!=a[i][1]){//如果freopen语句不正常
g=0;
}
}
}
if(g==0){//如果选手为乐子人
puts("Good luck and have fun.");
}
if(g==1){//如果选手为见祖宗人
puts("Wrong file operation takes you to your ancestors along with your 3 years' efforts on OI.");
}
if(g==2){//如果选手为普通人
puts("PION2202 RP++.");
}
}
}
字符串就恶心了······puis就是cout的意思,就是快。freopen应该懂吧,就是文件