自己学校的oj是100洛谷是wa,0分
#include<bits/stdc++.h>
using namespace std;
map<string,int> mp;//储存要背的
map<string,int> t;//储存实际有用的桶以及目前区间l~r内的元素
int n,m;
const int N=1e5+10;
string s[N];
string str;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>str;
mp[str]=1;
}
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>s[i];
if(mp[s[i]]) t[s[i]]++;
}
int num=t.size();//算出目前算式中有的要背的单词个数
if(num==0)
{
cout<<"0 0";
return 0;
}
t.clear();//清空,后面t要存区间l~r内的元素情况
int i=1,j=1;//因为有可能num=0,所以一开始为0
t[s[1]]++;
int cnt=1,ans=INT_MAX;//目前有几个种类,长度是多少
while(j<=m)
{
if(cnt==num)//选完
{
// cout<<666<<endl;
ans=min(ans,j-i+1);
t[s[i]]--;
if(!t[s[i]]&&mp[s[i]]) cnt--;
i++;
}
else
{
j++;
t[s[j]]++;
if(t[s[j]]==1&&mp[s[i]]) cnt++;
}
// cout<<i<<" "<<j<<" "<<cnt<<endl;
}
cout<<num<<endl<<ans;
}