题目背景
扶苏是洛谷网校的一名讲师,她负责了一场基础-提高衔接计划全真模拟赛。
在全真模拟赛里,需要选手在本地完成代码后按照真实比赛的要求放入以题目名命名的子目录(子文件夹)中,子文件夹的上级文件必须是用考号命名的文件夹。再把用考号命名的文件夹打成 zip。
例如,如果一道题目的名字叫做 ovo
,那么源程序必须命名为 ovo.cpp
。如果选手考号为 SD-114
,那么从 zip 起本题的目录结构必须为:
SD-114.zip/SD-114/ovo/ovo.cpp
这里 /
符号表示的是两级目录之间的间隔。
如果该选手的目录结构变成了 SD-114.zip/SD-114/SD-114/ovo/ovo.cpp
(也就是套了两层用考号名命名的文件夹),将无法正常评测。
题目描述
但是,扶苏生气地发现,即使在前一天晚上已经在群里强调了多次如何打包,并且通过测试赛指出了提交文件目录有问题的选手,但在全真模拟赛时仍有大量同学的目录结构出现问题。
一共有 n 名选手参加全真模拟赛,模拟赛共 m 道题。给出每道题的名字和每个选手每份源程序的目录结构,请你对于每个选手的每份源程序,判定 ta 的源程序目录是否正确。
选手的错误五花八门,包括但不限于:源程序名写错、考号写错、文件夹套多等等问题。为了方便起见,我们约定对于考号为 X
的选手的题目 X.zip/X/Y/Y.cpp
是唯一正确的目录结构,其余结构均为错误结构。
注意:同一选手不同题目的上级目录可能是不同的,也可能一个正确一个错误。
输入格式
第一行是两个整数,依次表示参赛选手数 n 和题目数 m。
接下来 m 行,每行一个字符串 s[i],表示一道题目的名字。
接下来 (m+1)×n 行,每(m+1) 行一组表示一名选手的所有题目的目录结构:
每组第一行是一个字符串 t[i],表示该选手的考号。
接下来 m 行,每行一个字符串 r[i],按题目顺序给出该选手每道题目的目录结构。
输出格式
按输入顺序,对每个选手的每个目录结构,输出一行一个字符串,如果该选手的目录结构正确,输出 Fusu is happy!
,否则输出 Fusu is angry!
。
输入输出样例
输入 #1
4 2 ovo vov SD-114 SD-114.zip/SD-114/ovo/ovo.cpp SD-114.zip/SD114/vov/vov.cpp LG-514 LG-514.zip/lg-514/ovo/ovo.cpp LG-514.zip/LG-514/vov/ovo.cpp PJ-998 PJ-998.zip/PJ-998/PJ-998/ovo/ovo.cpp PJ-998/PJ-998/vov/vov.cpp fusu fusu.zip/fusu/ovo/ovo.cpp fusu.zip/fusu/ovo/vov.cpp
输出 #1
Fusu is happy! Fusu is angry! Fusu is angry! Fusu is angry! Fusu is angry! Fusu is angry! Fusu is happy! Fusu is angry!
说明/提示
样例 1 解释
共有 44 位选手,22 道题目。两道题目分别是 ovo
和 vov
。
- 第一位选手的准考证号是
SD-114
。 -
- 他的第一题目录完全正确。
-
- 他第二题的第二级目录(SD114 文件夹)没有加中间的
-
符号,与准考证号不一致,故错误。
- 他第二题的第二级目录(SD114 文件夹)没有加中间的
- 第二位选手的准考证号是
LG-514
。 -
- 他第一题的第二级目录使用了小写字母,错误。
-
- 他第二题的源程序名写成了
ovo.cpp
,应该是vov.cpp
,错误
- 他第二题的源程序名写成了
- 第三位选手的准考证号是
PJ-998
。 -
- 他第一题的的准考证号目录套了两层(即有两个
PJ-998
),故错误。
- 他第一题的的准考证号目录套了两层(即有两个
-
- 他第二题没有打 zip 包(第一级目录没有
.zip
后缀),故错误
- 他第二题没有打 zip 包(第一级目录没有
- 第四位选手的准考证号是
fusu
。 -
- 她第一题的目录完全正确。
-
- 她第二题的子目录(第三级目录)写成了
ovo
,因该是vov
,故错误。
- 她第二题的子目录(第三级目录)写成了
数据规模与约定
- 对 30%30% 的数据,n=1。
- 另有 30%30% 的数据,m=1。
- 对 100%100% 的数据,1≤n,m≤10,s[i] 和 t[i] 的长度均不超过 2020,r[i] 的长度不超过 500500。字符串均只含大小写字母、数字和
-
,.
与/
符号。保证题目名和准考证号不含/
符号。
这道题我们可以用string中的“+”,它可以将两个string类型拼起来
如:
string standard = X + ".zip/" + X + "/" + Y + "/" + Y + ".cpp";
所以代码为
#include<bits/stdc++.h>
using namespace std;
int n,m;
string s,c,d;//s和d用来输入,c用来存标准答案
string b[15];
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>b[i];//输入题目
}
for(int i=1;i<=n;i++)
{
cin>>s;//输入每个人的名字
for(int j=1;j<=m;j++)
{
cin>>d;//输入每个人的答案
c=s+".zip/"+s+"/"+b[j]+"/"+b[j]+".cpp";//标准答案
if(d==c)cout<<"Fusu is happy!"<<endl;//if输入的答案和标准答案一样,输出Fusu is happy!
else cout<<"Fusu is angry!"<<endl;//else输出Fusu is angry!
}
}
return 0;
}