Submission #1311044

#TimeUsernameProblemLanguageResultExecution timeMemory
1311044waelkb Martian DNA (BOI18_dna)C++20
68 / 100
2094 ms3212 KiB

#include <bits/stdc++.h>

using namespace std;

#define int long long
#define pb push_back
#define f first
#define s second
#define mid (l+r)/2.0

const int M=1e18,N=3e5+1,mod=998244353;

int pxp(int x,int p){
     int ans=1;
     while(p){
         if(p&1)ans*=x,ans%=mod; x*=x,x%=mod,p>>=1;}
     return ans;
}

void solve(){
    int n,k,R;cin>>n>>k>>R;
    vector<int> a(n);
    vector<pair<int,int>> c(R);
    for(int i=0;i<n;i++)cin>>a[i];
    for(int i=0;i<R;i++){
        cin>>c[i].f>>c[i].s;
    }
    int l=0,r=0,cnt=0,ans=M;
    while(r<n){
        for(int i=0;i<R;i++){
            if(c[i].f==a[r]){
                c[i].s--;
                if(c[i].s==0)cnt++;
                break;
            }
        }r++;
        while(cnt==R){
            for(int i=0;i<R;i++){
                if(c[i].f==a[l]){
                    c[i].s++;
                    if(c[i].s==1)cnt--;
                    break;
                }
            }l++;
            ans=min(ans,r-l+1);
        }
    }
    if(ans==M)cout<<"impossible"<<'\n';
    else cout<<ans<<'\n';
}

signed main(){
    ios::sync_with_stdio(0), cin.tie(0); cout.tie(0);
  //  int t; cin>>t; while(t--)
        solve();
    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...