제출 #824787

#제출 시각아이디문제언어결과실행 시간메모리
824787ThylOne Martian DNA (BOI18_dna)C++14
100 / 100
75 ms4508 KiB
#include<bits/stdc++.h>

using namespace std;

int main(){
	int N,K,R;cin>>N>>K>>R;
	vector<int> nums(N);
	int occ[K];
	int wantedOcc[K];
	for(int i = 0 ; i <K;i++)occ[i]=wantedOcc[i]=0;
	for(int i = 0 ; i <N;i++){cin>>nums[i];}
	
	
	for(int i=0;i<R;i++){
		int nuc,w;cin>>nuc>>w;
		wantedOcc[nuc]=w;
	}
	int ans = N+1;
	int left=0;
	int nbGood=0;
	for(int p=0;p<N;p++){
		int val=nums[p];
		if(wantedOcc[val]==0)continue;
		occ[val]++;
		if(occ[val]==wantedOcc[val]){
			nbGood++;
		}
		while(nbGood==R && left<N && (wantedOcc[nums[left]]==0 || occ[nums[left]]-1>=wantedOcc[nums[left]])){
			int val2 = nums[left];
			occ[nums[left]]--;
			left++;
			if(wantedOcc[val2]==0)continue;
		}
		
		
		if(nbGood==R){
			ans = min(ans,p-left+1);
		}
	}
	if(ans==N+1){
		cout<<"impossible"<<endl;
	}else{
		cout<<ans<<endl;
	}
	
	
	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...