#include <bits/stdc++.h>
//#pragma GCC optimize("Ofast")
//#pragma GCC target("avx,avx2,fma")
using namespace std;
#define sped_up ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define ll long long
const ll INF = (ll)1e9 + 1, INFL = (ll)1e18 + 1;
const ll mod = (ll)1e9 + 7, MAXN = (ll)2e5 + 1;
ll mp[MAXN];
ll a[MAXN];
ll c[MAXN];
ll n, k, r;
bool f (ll m) {
    ll cnt = 0;
    for (int i = 1; i < m; i++) {
        c[a[i]]++;
        cnt += (c[a[i]] == mp[a[i]]);
    }
    for (int i = m; i <= n; i++) {
        c[a[i]]++;
        cnt += (c[a[i]] == mp[a[i]]);
        if (cnt == r) {
            for (int j = i - m + 1; j <= i; j++) c[a[j]]--;
            return 1;
        }
        cnt -= (c[a[i - m + 1]] == mp[a[i - m + 1]]);
        c[a[i - m + 1]]--;
    }
    for (int i = n - m + 2; i <= n; i++) c[a[i]]--;
    return 0;
}
int main() {
    sped_up;
    cin >> n >> k >> r;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int i = 1; i <= r; i++) {
        ll f, s;
        cin >> f >> s;
        mp[f] = s;
    }
    ll l = 0, r = n + 1;
    while (l + 1 < r) {
        ll m = (l + r) / 2;
        if (!f(m)) l = m;
        else r = m;
    }
    if (r != n + 1) cout << r;
    else cout << "impossible";
}
| # | 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... |