Submission #1333194

#TimeUsernameProblemLanguageResultExecution timeMemory
1333194kenkunkin Martian DNA (BOI18_dna)C++20
100 / 100
23 ms2612 KiB
#include <bits/stdc++.h>

using namespace std;

void Init()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}

typedef long long ll;
const int maxn=2e5+5;
int a[maxn],b[maxn],cnt[maxn];
int n,k,r;
int m=0,ans=INT_MAX;
void Input()
{
    cin>>n>>k>>r;
    for (int i=1;i<=n;i++)  cin>>a[i],a[i]++;
    for (int i=1;i<=r;i++)
    {
        int x,y;
        cin>>x>>y;
        b[x+1]=y;
    }

    for (int i=1;i<=k;i++)
        if (b[i]==0)
            m++;
}


void Bai()
{
    int i=0,j=0;
    while (i<=n&&j<=i)
    {
        if (m<k)
        {
            i++;
            cnt[a[i]]++;
            if (b[a[i]]>0&&cnt[a[i]]==b[a[i]]) m++;
        }
        else
        {
            ans=min(ans,i-j);
           // cout<<i<<" "<<j<<"\n";
            j++;
            if (b[a[j]]>0&&cnt[a[j]]==b[a[j]]) m--;
            cnt[a[j]]--;
        }
    }
    if (ans==INT_MAX)   cout<<"impossible";
    else cout<<ans;
}


int main()
{
    Init();
    Input();
    Bai();
    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...