Submission #1290916

#TimeUsernameProblemLanguageResultExecution timeMemory
1290916AhmadAlhussain Martian DNA (BOI18_dna)C++20
0 / 100
25 ms5132 KiB
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<unordered_map>
#include<algorithm>
#include<bitset>
#include<queue>
#include<numeric>
#include<climits>
#include<cstring>
#include<cmath>
using namespace std;
#define int long long
int n,k,R;
void solve() {
    cin>>n>>k>>R;
    int a[n];
    int cnt[k];
    int mn[k];
    memset(cnt, 0, sizeof(cnt));
    memset(mn,0,sizeof(mn));
    for(int i=0;i<n;i++) {
        cin>>a[i];
    }
    for(int i=0;i<R;i++) {
        int b,c;
        cin>>b>>c;
        mn[b]=c;
    }
    int l=0,r=0,z=0;
    int mn1=n+1;
    while(r<n) {
       if(z!=R) {
           cnt[a[r]]++;
           if(cnt[a[r]]==mn[a[r]]) {
               z++;
           }
           r++;
       }
        if(z==R) {
            mn1=min(mn1,r-l);
        }
        if(z==R) {
            if(cnt[a[l]]==mn[a[l]]) {
                z--;
            }
            cnt[a[l]]--;
            l++;
        }
        if(z==R) {
            mn1=min(mn1,r-l);
        }
    }
    if(mn1==n+1) {
        cout<<"impossible\n";
        return;
    }
    cout<<mn1<<'\n';
}
signed main() {
    cin.tie(0)->sync_with_stdio(0);
    cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--) {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...