제출 #555578

#제출 시각아이디문제언어결과실행 시간메모리
555578FidanNekameleoni (COCI15_nekameleoni)C++17
0 / 140
3101 ms264424 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MAXN=400010;
const ll inf=(1e18);
map<pair<ll, ll>, ll> mp;
int main(){
	ll n, k, m, i, j;
	cin>>n>>k>>m;
	vector<ll> v(n+1, k+10);
	for(ll i=1; i<=n; i++){ 
		cin>>v[i];
	}
	for(i=1; i<=n; i++){
		for(j=1; j<=n; j++){
			if(v[i]==v[j]){
				mp[{v[i], j}]=mp[{v[i], j-1}]+1;
			}
			else {
				mp[{v[i], j}]=mp[{v[i], j-1}];
			}
		}
	}
	while(m--){
		ll test;
		cin>>test;
		if(test==1){
			ll p, val;
			cin>>p>>val;
			for(i=p; i<=n; i++){
				mp[{v[p], i}]--;
			}
			v[p]=val;
			for(i=p; i<=n; i++){
				mp[{v[p], i}]++;
			}
		}
		else {
			ll l=0, r=0, cavab=n+100;
			while(r<=n){
				bool f=true;
				for(ll i=1; i<=k; i++){
					if(mp[{i, r}]-mp[{i, l}]==0){
						f=false;
					}
				}
				if(f){
					cavab=min(cavab, r-l);
					l++;
				}
				else {
					r++;
				}
			}
			if(cavab==n+100){
				cout<<-1<<endl;
			}
			else {
				cout<<cavab<<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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...