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
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 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