Submission #67731388
Source Code Expand
//# pragma GCC target("avx2")
# pragma GCC optimize("O3")
# pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(n);i++)
#include"atcoder/all"
using namespace atcoder;
typedef modint998244353 mi;
using namespace std;
#define all(a) a.begin(),a.end()
template<typename T> bool chmin(T& a, T b){if(a > b){a = b; return true;} return false;}
template<typename T> bool chmax(T& a, T b){if(a < b){a = b; return true;} return false;}
#define compress(a) sort(all(a));a.erase(unique(all(a)),a.end())
typedef long long ll;
typedef pair<ll,ll> P;
constexpr ll mod=998244353;
constexpr ll inf=3e18;
struct S{
int max_len;
char lchar,rchar;
int llen,rlen;
bool cnct;
};
S op(S lhs,S rhs){
if(lhs.cnct&&rhs.cnct){
if(lhs.rchar==rhs.lchar){
return {lhs.max_len+rhs.max_len,lhs.lchar,rhs.rchar,lhs.max_len+rhs.max_len,lhs.max_len+rhs.max_len,1};
}
else{
return {max(lhs.max_len,rhs.max_len),lhs.lchar,rhs.rchar,lhs.llen,rhs.rlen,0};
}
}
else{
int nmaxlen=max(lhs.max_len,rhs.max_len);
if(lhs.rchar==rhs.lchar)nmaxlen=max(nmaxlen,lhs.rlen+rhs.llen);
char nlchar=lhs.lchar;
char nrchar=rhs.rchar;
int nllen=lhs.llen;
if(lhs.cnct&&lhs.rchar==rhs.lchar)nllen+=rhs.llen;
int nrlen=rhs.rlen;
if(rhs.cnct&&rhs.lchar==lhs.rchar)nrlen+=lhs.rlen;
return {nmaxlen,nlchar,nrchar,nllen,nrlen,0};
}
}
S e(){
return {0,0,0,0,0,0};
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,q;
cin>>n>>q;
string s;
cin>>s;
vector<S>init(n);
rep(i,n)init[i]={1,s[i],s[i],1,1,1};
segtree<S,op,e> seg(init);
while(q--){
int t;
cin>>t;
if(t==1){
int i;
char x;
cin>>i>>x;
i--;
seg.set(i,{1,x,x,1,1,1});
}
else{
int l,r;
cin>>l>>r;
cout<<seg.prod(l-1,r).max_len<<endl;
}
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | F - Max Combo |
| User | Rho17 |
| Language | C++ 20 (gcc 12.2) |
| Score | 525 |
| Code Size | 2114 Byte |
| Status | AC |
| Exec Time | 573 ms |
| Memory | 34888 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 525 / 525 | ||||
| Status |
|
|
| 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 | 377 ms | 34012 KiB |
| evil_02.txt | AC | 386 ms | 34012 KiB |
| evil_03.txt | AC | 381 ms | 33924 KiB |
| evil_04.txt | AC | 389 ms | 34072 KiB |
| evil_05.txt | AC | 413 ms | 34032 KiB |
| evil_06.txt | AC | 430 ms | 34072 KiB |
| evil_07.txt | AC | 384 ms | 33976 KiB |
| evil_08.txt | AC | 392 ms | 34000 KiB |
| evil_09.txt | AC | 403 ms | 33924 KiB |
| evil_10.txt | AC | 417 ms | 33992 KiB |
| evil_11.txt | AC | 414 ms | 34012 KiB |
| evil_12.txt | AC | 426 ms | 34068 KiB |
| evil_13.txt | AC | 406 ms | 33852 KiB |
| evil_14.txt | AC | 413 ms | 34004 KiB |
| evil_15.txt | AC | 386 ms | 33988 KiB |
| evil_16.txt | AC | 390 ms | 33984 KiB |
| evil_17.txt | AC | 400 ms | 34008 KiB |
| evil_18.txt | AC | 413 ms | 34012 KiB |
| evil_19.txt | AC | 407 ms | 33972 KiB |
| evil_20.txt | AC | 425 ms | 33964 KiB |
| evil_21.txt | AC | 407 ms | 34064 KiB |
| evil_22.txt | AC | 406 ms | 34080 KiB |
| evil_23.txt | AC | 409 ms | 33924 KiB |
| evil_24.txt | AC | 411 ms | 34036 KiB |
| evil_25.txt | AC | 372 ms | 33968 KiB |
| evil_26.txt | AC | 372 ms | 33984 KiB |
| evil_27.txt | AC | 363 ms | 34016 KiB |
| evil_28.txt | AC | 394 ms | 33992 KiB |
| sample_01.txt | AC | 1 ms | 3404 KiB |
| sample_02.txt | AC | 1 ms | 3392 KiB |
| test_01.txt | AC | 414 ms | 34016 KiB |
| test_02.txt | AC | 401 ms | 33852 KiB |
| test_03.txt | AC | 408 ms | 34012 KiB |
| test_04.txt | AC | 402 ms | 34008 KiB |
| test_05.txt | AC | 399 ms | 34016 KiB |
| test_06.txt | AC | 407 ms | 34016 KiB |
| test_07.txt | AC | 410 ms | 33964 KiB |
| test_08.txt | AC | 407 ms | 33976 KiB |
| test_09.txt | AC | 448 ms | 33924 KiB |
| test_10.txt | AC | 445 ms | 34004 KiB |
| test_11.txt | AC | 439 ms | 33964 KiB |
| test_12.txt | AC | 442 ms | 34016 KiB |
| test_13.txt | AC | 444 ms | 33976 KiB |
| test_14.txt | AC | 450 ms | 33928 KiB |
| test_15.txt | AC | 445 ms | 34020 KiB |
| test_16.txt | AC | 445 ms | 34088 KiB |
| test_17.txt | AC | 444 ms | 34024 KiB |
| test_18.txt | AC | 443 ms | 33992 KiB |
| test_19.txt | AC | 556 ms | 3532 KiB |
| test_20.txt | AC | 557 ms | 3616 KiB |
| test_21.txt | AC | 568 ms | 3528 KiB |
| test_22.txt | AC | 566 ms | 3628 KiB |
| test_23.txt | AC | 573 ms | 3540 KiB |
| test_24.txt | AC | 565 ms | 3752 KiB |
| test_25.txt | AC | 562 ms | 3612 KiB |
| test_26.txt | AC | 567 ms | 3600 KiB |
| test_27.txt | AC | 566 ms | 3560 KiB |
| test_28.txt | AC | 563 ms | 3632 KiB |
| test_29.txt | AC | 564 ms | 34888 KiB |
| test_30.txt | AC | 561 ms | 34848 KiB |
| test_31.txt | AC | 419 ms | 33972 KiB |
| test_32.txt | AC | 418 ms | 33920 KiB |
| test_33.txt | AC | 414 ms | 33920 KiB |
| test_34.txt | AC | 420 ms | 33996 KiB |
| test_35.txt | AC | 414 ms | 33956 KiB |
| test_36.txt | AC | 413 ms | 33976 KiB |
| test_37.txt | AC | 410 ms | 33920 KiB |
| test_38.txt | AC | 416 ms | 33960 KiB |
| test_39.txt | AC | 428 ms | 33972 KiB |
| test_40.txt | AC | 423 ms | 33848 KiB |
| test_41.txt | AC | 441 ms | 33980 KiB |
| test_42.txt | AC | 429 ms | 34012 KiB |
| test_43.txt | AC | 132 ms | 34092 KiB |
| test_44.txt | AC | 133 ms | 33952 KiB |