Submission #1119030

#TimeUsernameProblemLanguageResultExecution timeMemory
1119030Skymagic Martian DNA (BOI18_dna)C++17
100 / 100
32 ms4640 KiB
#include <bits/stdc++.h>
 
using namespace std;
 
int n, k, r, req[300010], amt[300010], qu, ans = 1e9, p1 = 0, p2 = 0;
vector<int> dna;
 
void add(int type) {
    if(req[type] == 0) return;
    if(req[type] == amt[type]+1) {
        qu++;
    }
    amt[type]++;
}
 
void del(int type) {
    if(req[type] == 0) return;
    if(req[type] == amt[type]) {
        qu--;
    }
    amt[type]--;
}
 
int main() {
    cin.tie(0)->sync_with_stdio(0);
    cin >> n >> k >> r;
    for(int i=1; i<=n; i++) {
        int in;
        cin >> in;
        dna.push_back(in);
    }
    for(int i=1; i<=r; i++) {
        int b, q;
        cin >> b >> q;
        req[b] = q;
    }
    while(p1 < n) {
        while(qu < r && p2 < n) {
            add(dna[p2]);
            p2++;
        }
        if(qu == r) {
            ans = min(ans, p2-p1);
        }
        del(dna[p1]);
        p1++;
    }
    if(ans == 1e9) {
        cout << "impossible";
    } else {
        cout << ans;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...