#include <bits/stdc++.h>
using namespace std;
int n, t, r, x, y;
int a[200000], num[200000], valid;
bool block[200000];
deque<int> dq[200000];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> t >> r;
for (int i = 0; i < n; ++i)
{
cin >> a[i];
}
for (int i = 0; i < r; ++i)
{
cin >> x >> y;
num[x] = y;
}
x = 0;
y = 2e9;
for (int i = 0; i < n; ++i)
{
block[i] = true;
dq[a[i]].push_back(i);
valid += (dq[a[i]].size() == num[a[i]]);
if (dq[a[i]].size() > num[a[i]])
{
block[dq[a[i]].front()] = false;
dq[a[i]].pop_front();
}
while (x < i && !block[x])
{
x++;
}
if (valid == r)
{
y = min(y, i - x + 1);
}
}
if (y == 2e9)
{
cout << "impossible";
}
else
{
cout << y;
}
return 0;
}
| # | 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... |