Submission #993889

#TimeUsernameProblemLanguageResultExecution timeMemory
993889AndrijaM Martian DNA (BOI18_dna)C++14
100 / 100
26 ms8620 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

const int maxn=2e5+10;
const int mod=1e9+7;

int m[maxn];
int cnt[maxn];
int K[maxn];

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    memset(m,-1,sizeof m);
    ///freopen("prieteni.in","r",stdin);
    ///freopen("prieteni.out","w",stdout);
    int n,k,r;
    cin>>n>>k>>r;
    int x[n];
    for(int i=0;i<n;i++)
    {
        cin>>x[i];
        K[x[i]]++;
    }
    bool T=true;
    for(int i=0;i<r;i++)
    {
        int koj,kol;
        cin>>koj>>kol;
        m[koj]=kol;
        if(K[koj]<m[koj])
        {
            T=false;
        }
    }
    if(!T)
    {
        cout<<"impossible"<<endl;
        return 0;
    }
    int ok=0;
    int ans=n;
    int j=-1;
    for(int i=0;i<n;i++)
    {
        cnt[x[i]]++;
        if(cnt[x[i]]==m[x[i]])
        {
            ok++;
        }
        if(ok==r)
        {
            while(j+1<i && cnt[x[j+1]]!=m[x[j+1]])
            {
                cnt[x[j+1]]--;
                j++;
            }
            ans=min(ans, i-(j+1)+1);
        }
    }
    cout<<ans<<endl;
    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...