Submission #1327084

#TimeUsernameProblemLanguageResultExecution timeMemory
1327084husseinjuanda Martian DNA (BOI18_dna)C++20
100 / 100
25 ms5092 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long 

signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n, k, r; cin >> n >> k >> r;
    vector<int> freq(k, 1e18);
    vector<int> x(n);
    for(int i = 0; i < n; i++){
        cin >> x[i];
    }
    for(int i = 0; i < r; i++){
        int a, f; cin >> a >> f;
        freq[a] = f;
    }
    int co = 0;
    int it = 0;
    vector<int> f(k);
    for(int i = 0; i < n; i++){
        f[x[i]]++;
        if(f[x[i]] == freq[x[i]]){
            co++;
        }
        if(co == r){
            it = i+1;
            break;
        }
    }
    if(it == 0){
        cout << "impossible" << "\n";
        return 0;
    }
    int ns = it;
    int i = it;
    int size = ns;
    int l = 0;
    while(l < it-1){
        if(f[x[l]] != freq[x[l]]){
            f[x[l]]--;
            l++;
        }else{
            break;
        }
    }
    ns = min(ns, it - l);
    for(int i = it; i < n; i++){
        f[x[i]]++;
        while(l < i){
            if(f[x[l]] != freq[x[l]]){
                f[x[l]]--;
                l++;
            }else{
                break;
            }
        }
        ns = min(ns, i - l + 1);
    }
    cout << ns << "\n";
    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...