제출 #1342911

#제출 시각아이디문제언어결과실행 시간메모리
1342911tsengang Martian DNA (BOI18_dna)C++20
100 / 100
144 ms9560 KiB
#include <bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define ertunt return
#define rall(x) x.rbegin(),x.rend()
using namespace std;
int main(){
	ll n,k,r;
	cin >> n >> k >> r;
	vector<ll>a(n);
	for(auto &x : a)cin >> x;
	vector<ll>tar(k+1,0),cnt(k+1);
	vector<bool>en(k+1,0);
	set<ll>st;
	for(ll i = 0; i < r; i++){
		ll x,y;
		cin >> x >> y;
		st.insert(x);
		tar[x] = y;
		en[x] = 1;
	}
	ll j = 0;
	ll ans = 1e18;
	for(ll i = 0; i < n; i++){
		if(i > 0){
			cnt[a[i-1]]--;
			if(en[a[i-1]] && cnt[a[i-1]] < tar[a[i-1]]) st.insert(a[i-1]);
		}
		while(j < n && !st.empty()){
			cnt[a[j]]++;
			if(en[a[j]] && cnt[a[j]] >= tar[a[j]]) st.erase(a[j]);
			j++;
		}
		if(st.empty()) ans = min(ans,j-i);
	}	
	if(ans != 1e18)cout << ans;
	else cout << "impossible";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...