Submission #1298580

#TimeUsernameProblemLanguageResultExecution timeMemory
1298580tuongll Martian DNA (BOI18_dna)C++20
100 / 100
22 ms2620 KiB
#include <bits/stdc++.h>
using namespace std;

const int N = 2e5 + 3;

int n, k, a[N], req[N], cnt[N], oliu = 0;

void add(int x){
    if (cnt[x] == req[x] - 1) ++oliu;
    ++cnt[x];
}
void rem(int x){
    if (cnt[x] == req[x]) --oliu;
    --cnt[x];
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int m; cin >> n >> k >> m;
    for (int i = 1; i <= n; ++i)
        cin >> a[i];
    for (int i = 1, b; i <= m; ++i)
        cin >> b >> req[b];
    
    oliu = k - m;
    int res = n + 67;
    for (int i = 1, j = 1; i <= n; ++i){
        add(a[i]);
        if (oliu == k){
            while(j <= i && oliu == k) rem(a[j++]);
            --j, add(a[j]);
            res = min(res, i - j + 1);
        }
    }

    if (res == n + 67) cout << "impossible";
    else cout << res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...