题目描述
题目描述
终于办到第五场语法周赛了,按照语法周赛的规则,之前拿过IOI赛制下满分的同学将不会参与排名。
现在给你前四场比赛的满分名单,和本场比赛的参赛选手。
请你判断本场比赛参与排名的人数为多少。
输入格式
第一行两个整数 n,mn,m。
第二行 nn 个字符串,每个字符串为之前满分名单中的一个用户名,保证本行没有重复的用户名。
第三行 mm 个字符串,每个字符串为本场比赛参赛名单中的一个用户名,保证本行没有重复的用户名。
输出格式
一行一个整数,表示本场比赛中有多少人参加排名。
输入1:
3 5
abb aab aaa
bab aab aba aaa bbb
输出1:
3
样例解释
bab (aab) aba (aaa) bbb
括号括住的为拿过满分,不参加排名的人。
数据规模与约定
对于 100%100% 的数据,1≤n,m≤5×1041≤n,m≤5×104,保证所有用户名都只由不超过四个小写英文字母组成。
- 子任务 1(30 分):保证 n=1n=1,m≤103m≤103。
- 子任务 2(30 分):保证 n,m≤103n,m≤103
- 子任务 3(40 分):没有特殊限制
#include<bits/stdc++.h>
using namespace std;
bool b[30][30][30][30];
string a;
int main()
{
int m,n,cnt1,cnt2=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a;
int len=a.size();
for(int i=len;i<=4;i++){
a[i]+=char(96);
}
b[a[0]-96][a[1]-96][a[2]-96][a[3]-96]=1;
}
for(int i=1;i<=m;i++){
cin>>a;
int len=a.size();
for(int i=len;i<=4;i++){
a[i]+=char(96);
}
if(b[a[0]-96][a[1]-96][a[2]-96][a[3]-96]==1)cnt2++;
}
cout<<m-cnt2;
return 0;
}