104922024-04-03 13:36:28111Branch Cuttingcpp17Hibás válasz 8/100344ms23844 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

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;
	}
	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];
					ans+=((e-s+N)%N+1)/2;
					z.emplace(s,e);
				}
				else if(x==e){
					e=p[e];
					ans+=((e-s+N)%N+1)/2;
					z.emplace(s,e);
				}
				else{
					ans+=((p[x]-s+N)%N+1)/2;
					z.emplace(s,p[x]);
					ans+=((e-n[x]+N)%N+1)/2;
					z.emplace(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()){
			if(s!=e){
				ans+=((e-s+N)%N+1)/2;
				z.emplace(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;
				}
			}
			if(s!=e){
				ans+=((e-s+N)%N+1)/2;
				z.emplace(s,e);
			}
		}
		cout<<ans<<' ';
	}
	cout<<'\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1824 KiB
2Elfogadva3ms2056 KiB
subtask28/8
3Elfogadva3ms2292 KiB
4Elfogadva3ms2496 KiB
5Elfogadva3ms2572 KiB
6Elfogadva3ms2568 KiB
7Elfogadva3ms2676 KiB
8Elfogadva3ms2888 KiB
9Elfogadva3ms3116 KiB
10Elfogadva3ms3324 KiB
11Elfogadva3ms3528 KiB
subtask30/15
12Hibás válasz280ms23504 KiB
13Hibás válasz287ms23076 KiB
14Hibás válasz270ms22580 KiB
15Hibás válasz282ms23576 KiB
16Hibás válasz280ms23456 KiB
17Hibás válasz236ms21288 KiB
18Hibás válasz236ms21156 KiB
subtask40/10
19Elfogadva3ms4056 KiB
20Elfogadva3ms4048 KiB
21Elfogadva4ms4204 KiB
22Hibás válasz4ms4260 KiB
23Hibás válasz4ms4576 KiB
24Elfogadva4ms4688 KiB
25Elfogadva4ms5008 KiB
26Hibás válasz4ms4924 KiB
subtask50/25
27Elfogadva4ms5132 KiB
28Elfogadva3ms5356 KiB
29Hibás válasz12ms5524 KiB
30Hibás válasz12ms5696 KiB
31Hibás válasz12ms5808 KiB
32Elfogadva9ms5552 KiB
33Elfogadva10ms5424 KiB
34Hibás válasz12ms5732 KiB
subtask60/42
35Elfogadva35ms14296 KiB
36Elfogadva20ms14296 KiB
37Hibás válasz344ms21028 KiB
38Hibás válasz312ms17820 KiB
39Hibás válasz335ms21076 KiB
40Elfogadva223ms14424 KiB
41Elfogadva219ms14408 KiB
42Elfogadva222ms14408 KiB
43Hibás válasz321ms23844 KiB