#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n, k, R;
cin >> n >> k >> R;
vector<int> d(n+1);
d[0] = k;
for (int i = 1; i <= n; i++)
cin >> d[i];
vector<int> req(k+1);
for (int i = 0; i < R; i++)
{
int b, q;
cin >> b >> q;
req[b] = q;
}
vector<int> count(k+1);
count[k]++;
int good = k+1 - R;
int l = 0, r = 0;
while (r+1 <= n)
{
if (good == k+1)
break;
int val = d[r+1];
count[val]++;
if (req[val] == count[val])
good++;
r++;
}
if (good < k+1)
{
cout << "impossible";
return 0;
}
int ans = 1e9;
while (l <= n && r <= n)
{
ans = min(ans, r-l+1);
int val_l = d[l];
if (l == r || count[val_l]-1 < req[val_l])
{
if (r == n)
break;
r++;
int val_r = d[r];
count[val_r]++;
}
else
{
count[val_l]--;
l++;
}
}
cout << ans;
}
| # | 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... |