#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int ck[N],r=0,req[N],cnt[N],arr[N];
//O(n log n) able but solved in O(n) :>
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,k,r;
cin>>n >>k >>r;
for(int i=1;i<=n;i++){
cin>>arr[i];
}
for(int i=0;i<r;i++){
int a,b;
cin>>a >>b;
req[a]=b;
}
for(int i=1;i<=n;i++){
ck[arr[i]]++;
if(ck[arr[i]]-1<req[arr[i]] && ck[arr[i]]>=req[arr[i]]) r=i;
}
for(int i=0;i<k;i++){
if(ck[i]<req[i]){
cout<<"impossible";
return 0;
}
}
int ans=r;
for(int i=1;i<=r;i++) cnt[arr[i]]++;
for(int i=2;i<=n;i++){
cnt[arr[i-1]]--;
while(cnt[arr[i-1]]<req[arr[i-1]] && r+1<n) r++,cnt[arr[r]]++;
if(cnt[arr[i-1]]<req[arr[i-1]]) break;
ans=min(ans,r-i+1);
}
cout<<ans;
}
# | 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... |