样例数据过了,但洛谷CE
源码:
#include <bits/stdc++.h>
using namespace std;
int n, m, ans1, ans2, l = 1;
string s[100001];
map <string, bool> dic;
map <string, int> get;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> s[0];
dic[s[0]] = true;
}
cin >> m;
for (int i = 1; i <= m; i++) {
cin >> s[i];
if (dic[s[i]])
get[s[i]]++;
if (get[s[i]] == 1)
ans1++, ans2 = i - l + 1;
while (l <= i)
if (!dic[s[i]])
l++;
else if (get[s[l]] > 1)
get[s[l++]]--;
else
break;
ans2 = min(ans2, i - l + 1);
}
cout << ans1 << '\n' << ans2;
return 0;
}