SEARCH - Dãy số
Tác giả: ladpro98
Ngôn ngữ: C++
#include <iostream>
#include <cstdio>
const int N = 200005;
using namespace std;
int m, n, p;
int a[N], b[N], c[N];
bool inA[N], inB[N], chk[N];
int main() {
scanf("%d %d %d", &m, &n, &p);
int cnt = 0;
for(int i = 1; i <= m; i++) {
scanf("%d", a + i);
if (!inA[a[i]]) cnt++;
inA[a[i]] = true;
}
for(int i = 1; i <= n; i++) {
scanf("%d", b + i);
inB[b[i]] = true;
}
for(int i = 1; i <= p; i++) scanf("%d", c + i);
int res = 0, d, j;
for(int i = 1; i <= p; i = j + 1) {
j = i;
if (!inB[c[i]]) {
d = 0;
for(j = i; j <= p && !inB[c[j]]; j++) {
if (!chk[c[j]] && inA[c[j]]) d++;
chk[c[j]] = true;
}
if (d >= cnt) res = max(res, j - i);
for(int k = i; k < j; k++) chk[c[k]] = false;
}
}
printf("%d", res);
return 0;
}