#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int INF = 2e9;
int main() {
ios_base::sync_with_stdio(false);
int n, k, r;
cin >> n >> k >> r;
vector<int> v(n);
for(int i = 0; i < n; i++) {
cin >> v[i];
}
vector<int> req(k + 1, 0);
for(int i = 0; i < r; i++) {
int A, B;
cin >> A >> B;
req[A] = B;
}
int j = 0;
int res = INF;
for(int i = 0; i < n; i++) {
while(r > 0 and j < n) {
req[v[j]]--;
if(req[v[j]] == 0) {
r--;
}
j++;
}
if(r == 0) {
res = min(res, j - i);
}
req[v[i]]++;
if(req[v[i]] > 0) {
r++;
}
}
if(res == INF) {
cout << "impossible" << endl;
}
else {
cout << res << endl;
}
return 0;
}
/*
5 2 2
0 1 1 0 1
0 1
1 1
13 4 3
1 1 3 2 0 1 2 0 0 0 0 3 1
0 2
2 1
1 2
5 3 1
1 2 0 1 2
0 2
*/
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |