#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,k,a,b,res=INT_MAX;
    cin>>n>>m>>k;
    int sum=m-k;
    vector<int>v,v1(m),dp(m);
    bool vis[m];
    for(int i=0;i<m;i++)vis[i]=true;
    for(int i=0;i<n;i++)
    {
        cin>>a;
        v.push_back(a);
    }
    for(int i=0;i<k;i++)
    {
        cin>>a>>b;
        v1[a]=b;
        vis[a]=0;
    }
    int l=0;
    for(int i=0;i<n;i++)
    {
        dp[v[i]]++;
        if(vis[v[i]]==0&&dp[v[i]]>=v1[v[i]])
        {
            vis[v[i]]=1;
            sum++;
        }
        while(l<=i)
        {
            if(dp[v[l]]>v1[v[l]])
            {
                dp[v[l]]--;
                l++;
            }
            else break;
        }
        if(sum==m)res=min(res,i-l+1);
    }
    if(res==INT_MAX)cout<<"impossible";
    else cout<<res;
    return 0;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |