Submission #1287565

#TimeUsernameProblemLanguageResultExecution timeMemory
1287565Hamed_Ghaffari Martian DNA (BOI18_dna)C++20
100 / 100
112 ms16408 KiB
#include <bits/stdc++.h>
using namespace std;

#define SZ(x) int(x.size())

const int MXN = 2e5+5;

int n, k, r, a[MXN], b[MXN];
vector<int> vec[MXN];

int32_t main() {
    cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);
    cin >> n >> k >> r;
    for(int i=0; i<n; i++) cin >> a[i], vec[a[i]].push_back(i);
    int mx = 0;
    while(r--) {
        int x, y;
        cin >> x >> y;
        if(y>SZ(vec[x])) {
            cout << "impossible\n";
            return 0;
        }
        mx = max(mx, vec[x][y-1]);
        b[x] = y;
    }
    int ans = n;
    set<int> st;
    for(int i=0; i<n; i++) {
        if(b[a[i]]) {
            int pos = lower_bound(vec[a[i]].begin(), vec[a[i]].end(), i)-vec[a[i]].begin();
            if(pos-b[a[i]]>=0) st.erase(vec[a[i]][pos-b[a[i]]]);
            if(pos-b[a[i]]+1>=0) st.insert(vec[a[i]][pos-b[a[i]]+1]);
        }
        if(i>=mx) ans = min(ans, i - (*st.begin()) + 1);
    }
    cout << ans << '\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...