104942024-04-03 13:56:34111Branch Cuttingcpp17Accepted 100/100314ms21720 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

int solve1(vector<int>&v){
	int N=v.size();
	int s=min_element(v.begin(),v.end())-v.begin();
	int ans=0;
	for(int i=0,j=0;i<N;i++){
		if(v[s]<v[(s+1)%N]){
			j++;
		}
		else if(j){
			ans+=(j+1)/2;
			j=0;
		}
		s=(s+1)%N;
	}
	return ans;
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N,Q;
	cin>>N>>Q;
	vector<int>v(N),n(N),p(N);
	for(int i=0;i<N;i++){
		cin>>v[i];
		n[i]=i==N-1?0:i+1;
		p[i]=i==0?N-1:i-1;
	}
	int s=min_element(v.begin(),v.end())-v.begin();
	map<int,int>z;
	for(int i=0,j=0;i<N;i++){
		if(v[s]<v[n[s]]){
			j++;
		}
		else if(j){
			z.emplace((s-j+N)%N,s);
			j=0;
		}
		s=n[s];
	}
	int ans=0;
	for(auto[x,y]:z){
		ans+=((y-x+N)%N+1)/2;
	}
	auto ins=[&](int s,int e){
		if(s==e)return;
		ans+=((e-s+N)%N+1)/2;
		z.emplace(s,e);
	};
	cout<<ans<<' ';
	for(int i=0;i<Q;i++){
		int x;
		cin>>x>>v[x];
		if(!z.empty()){
			auto t=z.upper_bound(x);
			t=t==z.begin()?prev(z.end()):prev(t);
			int s=t->first,e=t->second;
			if(x>=s&&x<=e||x>=s&&s>e||e>=x&&s>e){
				z.erase(t);
				ans-=((e-s+N)%N+1)/2;
				if(x==s&&x==e){
				}
				else if(x==s){
					s=n[s];
					ins(s,e);
				}
				else if(x==e){
					e=p[e];
					ins(s,e);
				}
				else{
					ins(s,p[x]);
					ins(n[x],e);
				}
			}
		}
		int s=v[p[x]]<v[x]?p[x]:x;
		int e=v[x]<v[n[x]]?n[x]:x;
		if(z.empty()){
			ins(s,e);
		}
		else{
			auto t=z.upper_bound(x);
			if(t==z.end()){
				t=z.begin();
			}
			if(t->first==e){
				auto[ss,ee]=*t;
				t=z.erase(t);
				ans-=((ee-ss+N)%N+1)/2;
				e=ee;
			}
			if(!z.empty()){
				t=t==z.begin()?prev(z.end()):prev(t);
				if(t->second==s){
					auto[ss,ee]=*t;
					t=z.erase(t);
					ans-=((ee-ss+N)%N+1)/2;
					s=ss;
				}
			}
			ins(s,e);
		}
		cout<<ans<<' ';
	}
	cout<<'\n';
	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms2108 KiB
2Accepted3ms2112 KiB
subtask28/8
3Accepted3ms2244 KiB
4Accepted3ms2376 KiB
5Accepted3ms2448 KiB
6Accepted3ms2568 KiB
7Accepted3ms2676 KiB
8Accepted3ms2936 KiB
9Accepted3ms2936 KiB
10Accepted3ms2944 KiB
11Accepted3ms3084 KiB
subtask315/15
12Accepted215ms17612 KiB
13Accepted202ms16828 KiB
14Accepted190ms16040 KiB
15Accepted217ms18412 KiB
16Accepted214ms19064 KiB
17Accepted115ms13208 KiB
18Accepted115ms13116 KiB
subtask410/10
19Accepted3ms3944 KiB
20Accepted3ms4020 KiB
21Accepted4ms4044 KiB
22Accepted4ms3972 KiB
23Accepted4ms3988 KiB
24Accepted3ms3964 KiB
25Accepted3ms3968 KiB
26Accepted4ms4312 KiB
subtask525/25
27Accepted4ms4564 KiB
28Accepted4ms4784 KiB
29Accepted12ms5252 KiB
30Accepted12ms5236 KiB
31Accepted12ms5164 KiB
32Accepted9ms4912 KiB
33Accepted10ms4916 KiB
34Accepted10ms5288 KiB
subtask642/42
35Accepted35ms13704 KiB
36Accepted20ms13836 KiB
37Accepted312ms19636 KiB
38Accepted296ms17072 KiB
39Accepted314ms20496 KiB
40Accepted216ms13880 KiB
41Accepted215ms13864 KiB
42Accepted216ms13864 KiB
43Accepted293ms21720 KiB