Submission #67872524


Source Code Expand

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
#define endl '\n'
#define cty cout<<"Yes"<<endl
#define ctn cout<<"No"<<endl
#define dbg(x) cout<<<<#x<<" : "<<x<<endl
#define int long long
const ll mod = 1e8;
const int mxn = 4e6+10;
struct node{
	int l,r,len,ls,rs,s;
	//左端点,右端点,区间长度
	//从左开始最长连续字符长度,从右开始最长连续字符长度,区间内最长连续字符长度
}t[mxn];
int n,q;
string s;
inline int lc(int i){
	return i<<1;
}
inline int rc(int i){
	return i<<1|1;
}
node pushup(node a,node b){
	//合并
	node t;
	t.l = a.l;
	t.r = b.r;
	t.len = t.r-t.l+1;
	t.ls = a.ls;
	t.rs = b.rs;
	t.s = max(a.s,b.s);
	if(s[a.r]==s[b.l]){
		t.s = max(t.s,a.rs+b.ls);
		if(a.ls==a.len) t.ls = a.len+b.ls;
		if(b.rs==b.len) t.rs = b.len+a.rs;
	}
	return t;
}
void build(int p,int l,int r){
	t[p] = {l,r,r-l+1,1,1,1};
	if(l==r) return;
	int mid = (l+r)/2;
	build(lc(p), l, mid);
	build(rc(p), mid+1, r);
	t[p] = pushup(t[lc(p)],t[rc(p)]);
}
void update(int p,int x){
	if(t[p].l==t[p].r) return;
	int mid = (t[p].l+t[p].r)/2;
	if(x<=mid) update(lc(p), x);
	else update(rc(p), x);
	t[p] = pushup(t[lc(p)], t[rc(p)]);
}
node query(int p,int l,int r){
	if(t[p].l>r||t[p].r<l) return {0,0,0,0,0,0};
	if(t[p].l>=l&&t[p].r<=r){
		return t[p];
	}
	return pushup(query(lc(p),l,r),query(rc(p),l,r));
}
void LonelyLunar_solve(){
	cin>>n>>q;
	cin>>s;
	s = " "+s;
	build(1,1,n);
	while(q--){
		int op;
		cin>>op;
		if(op==1){
			int i;
			char x;
			cin>>i>>x;
			s[i] = x;
			update(1,i);
		}
		else{
			int l,r;
			cin>>l>>r;
			cout<<query(1,l,r).s<<endl;
		}
	}
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	int _ = 1;
	//cin>>_;
	while(_--){
		LonelyLunar_solve();
	}
	return 0;
}

Submission Info

Submission Time
Task F - Max Combo
User LonelyLunar
Language C++ 20 (gcc 12.2)
Score 525
Code Size 1878 Byte
Status AC
Exec Time 544 ms
Memory 54756 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 525 / 525
Status
AC × 2
AC × 74
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All evil_01.txt, evil_02.txt, evil_03.txt, evil_04.txt, evil_05.txt, evil_06.txt, evil_07.txt, evil_08.txt, evil_09.txt, evil_10.txt, evil_11.txt, evil_12.txt, evil_13.txt, evil_14.txt, evil_15.txt, evil_16.txt, evil_17.txt, evil_18.txt, evil_19.txt, evil_20.txt, evil_21.txt, evil_22.txt, evil_23.txt, evil_24.txt, evil_25.txt, evil_26.txt, evil_27.txt, evil_28.txt, sample_01.txt, sample_02.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt
Case Name Status Exec Time Memory
evil_01.txt AC 429 ms 52868 KiB
evil_02.txt AC 469 ms 52816 KiB
evil_03.txt AC 460 ms 52824 KiB
evil_04.txt AC 515 ms 52816 KiB
evil_05.txt AC 447 ms 52984 KiB
evil_06.txt AC 492 ms 52984 KiB
evil_07.txt AC 438 ms 52820 KiB
evil_08.txt AC 481 ms 52920 KiB
evil_09.txt AC 441 ms 52924 KiB
evil_10.txt AC 500 ms 52984 KiB
evil_11.txt AC 453 ms 53036 KiB
evil_12.txt AC 491 ms 52940 KiB
evil_13.txt AC 432 ms 52980 KiB
evil_14.txt AC 483 ms 52920 KiB
evil_15.txt AC 458 ms 53032 KiB
evil_16.txt AC 486 ms 53052 KiB
evil_17.txt AC 436 ms 52988 KiB
evil_18.txt AC 482 ms 52992 KiB
evil_19.txt AC 465 ms 52820 KiB
evil_20.txt AC 483 ms 52920 KiB
evil_21.txt AC 447 ms 52932 KiB
evil_22.txt AC 478 ms 52984 KiB
evil_23.txt AC 456 ms 52816 KiB
evil_24.txt AC 467 ms 52980 KiB
evil_25.txt AC 322 ms 52980 KiB
evil_26.txt AC 323 ms 52916 KiB
evil_27.txt AC 182 ms 52868 KiB
evil_28.txt AC 379 ms 52784 KiB
sample_01.txt AC 1 ms 3468 KiB
sample_02.txt AC 1 ms 3484 KiB
test_01.txt AC 496 ms 52996 KiB
test_02.txt AC 499 ms 52716 KiB
test_03.txt AC 492 ms 52964 KiB
test_04.txt AC 481 ms 52856 KiB
test_05.txt AC 518 ms 52804 KiB
test_06.txt AC 507 ms 52872 KiB
test_07.txt AC 476 ms 52880 KiB
test_08.txt AC 517 ms 52416 KiB
test_09.txt AC 522 ms 52968 KiB
test_10.txt AC 514 ms 52900 KiB
test_11.txt AC 537 ms 52844 KiB
test_12.txt AC 529 ms 52676 KiB
test_13.txt AC 527 ms 53020 KiB
test_14.txt AC 526 ms 52892 KiB
test_15.txt AC 518 ms 52924 KiB
test_16.txt AC 517 ms 52688 KiB
test_17.txt AC 544 ms 52296 KiB
test_18.txt AC 538 ms 52912 KiB
test_19.txt AC 203 ms 3492 KiB
test_20.txt AC 202 ms 3496 KiB
test_21.txt AC 218 ms 3608 KiB
test_22.txt AC 213 ms 3604 KiB
test_23.txt AC 212 ms 3536 KiB
test_24.txt AC 210 ms 3512 KiB
test_25.txt AC 209 ms 3664 KiB
test_26.txt AC 211 ms 3292 KiB
test_27.txt AC 210 ms 3584 KiB
test_28.txt AC 208 ms 3460 KiB
test_29.txt AC 112 ms 54392 KiB
test_30.txt AC 110 ms 54756 KiB
test_31.txt AC 490 ms 52904 KiB
test_32.txt AC 483 ms 52956 KiB
test_33.txt AC 481 ms 52548 KiB
test_34.txt AC 473 ms 52704 KiB
test_35.txt AC 492 ms 52968 KiB
test_36.txt AC 494 ms 52920 KiB
test_37.txt AC 500 ms 52432 KiB
test_38.txt AC 475 ms 52972 KiB
test_39.txt AC 510 ms 52884 KiB
test_40.txt AC 474 ms 52820 KiB
test_41.txt AC 521 ms 52956 KiB
test_42.txt AC 504 ms 52828 KiB
test_43.txt AC 345 ms 52312 KiB
test_44.txt AC 331 ms 52840 KiB