79分求调
查看原帖
79分求调
1286552
ice_shooter楼主2025/7/24 16:04
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
long long a[1919810],sum;
long long vis[1919810];
int main(){
	cin>>n>>k>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}for(int i=1;i<=m;i++){
		int x,y;
		cin>>x>>y;
		vis[x]+=y;
		sum+=y;
	}long long l=1,r=0,mini=1e18;
	while(sum && r<n){
		if(vis[a[++r]]>0){
			sum--;
		}vis[a[r]]--;
	}if(!sum)mini=min(mini,r-l+1);
	while(r<n){
		vis[a[++r]]--;
		while(l<=r && vis[a[l]]<0){
			vis[a[l++]]++;
		}mini=min(mini,r-l+1);
	}if(mini!=1e18)cout<<mini;
	else cout<<"impossible";
	return 0;
}
2025/7/24 16:04
加载中...