#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... |