Submission #72552281


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,B=500;
const long long INF=1e18;
int n,q,blk;
long long a[N];
int belong[N],L[B],R[B];
long long mx[B],mn[B],add[B];
bool rev[B];

void build(){
    blk=sqrt(n);
    for(int i=1;i<=n;i++){
        belong[i]=(i-1)/blk+1;
        if(!L[belong[i]])L[belong[i]]=i;
        R[belong[i]]=i;
    }
    for(int i=1;i<=belong[n];i++){
        mx[i]=-INF,mn[i]=INF;
        for(int j=L[i];j<=R[i];j++){
            mx[i]=max(mx[i],a[j]);
            mn[i]=min(mn[i],a[j]);
        }
    }
}

void push(int b){
    // 注意:先处理翻转,再处理加法
    if(rev[b]){
        for(int i=L[b];i<=R[b];i++){
            a[i]=-a[i];
        }
        rev[b]=0;
    }
    if(add[b]){
        for(int i=L[b];i<=R[b];i++){
            a[i]+=add[b];
        }
        add[b]=0;
    }
}

void update_block(int b){
    mx[b]=-INF,mn[b]=INF;
    for(int i=L[b];i<=R[b];i++){
        mx[b]=max(mx[b],a[i]);
        mn[b]=min(mn[b],a[i]);
    }
}

void update_add(int l,int r,long long v){
    int bl=belong[l],br=belong[r];
    if(bl==br){
        push(bl);
        for(int i=l;i<=r;i++)a[i]+=v;
        update_block(bl);
    }else{
        push(bl);
        for(int i=l;i<=R[bl];i++)a[i]+=v;
        update_block(bl);
        
        for(int i=bl+1;i<br;i++){
            // 对于整块:如果有翻转标记,加法要取反
            if(rev[i]){
                add[i]-=v;
                mx[i]-=v;
                mn[i]-=v;
            }else{
                add[i]+=v;
                mx[i]+=v;
                mn[i]+=v;
            }
        }
        
        push(br);
        for(int i=L[br];i<=r;i++)a[i]+=v;
        update_block(br);
    }
}

void update_rev(int l,int r){
    int bl=belong[l],br=belong[r];
    if(bl==br){
        push(bl);
        for(int i=l;i<=r;i++)a[i]=-a[i];
        update_block(bl);
    }else{
        push(bl);
        for(int i=l;i<=R[bl];i++)a[i]=-a[i];
        update_block(bl);
        
        for(int i=bl+1;i<br;i++){
            rev[i]^=1;
            swap(mx[i],mn[i]);
            mx[i]=-mx[i];
            mn[i]=-mn[i];
        }
        
        push(br);
        for(int i=L[br];i<=r;i++)a[i]=-a[i];
        update_block(br);
    }
}

long long query_max(int l,int r){
    int bl=belong[l],br=belong[r];
    long long res=-INF;
    if(bl==br){
        push(bl);
        for(int i=l;i<=r;i++)res=max(res,a[i]);
        update_block(bl);
    }else{
        push(bl);
        for(int i=l;i<=R[bl];i++)res=max(res,a[i]);
        update_block(bl);
        
        for(int i=bl+1;i<br;i++){
            if(rev[i]){
                // 有翻转标记时,最大值是-min + add
                res=max(res,-mn[i]+add[i]);
            }else{
                res=max(res,mx[i]+add[i]);
            }
        }
        
        push(br);
        for(int i=L[br];i<=r;i++)res=max(res,a[i]);
        update_block(br);
    }
    return res;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n>>q;
    // 初始数组全为0
    for(int i=1;i<=n;i++)a[i]=0;
    build();
    
    while(q--){
        int t,l,r;
        long long x;
        cin>>t>>l>>r;
        if(t==1){
            cin>>x;
            update_add(l,r,x);
        }else if(t==2){
            update_rev(l,r);
        }else{
            long long ans=query_max(l,r);
            cout<<ans<<'\n';
        }
    }
    return 0;
}

Submission Info

Submission Time
Task G - Takoyaki and Flip
User kac17
Language C++23 (GCC 15.2.0)
Score 0
Code Size 3578 Byte
Status WA
Exec Time 337 ms
Memory 6136 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 575
Status
AC × 1
WA × 2
AC × 1
WA × 64
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt, 01_random_45.txt, 01_random_46.txt, 01_random_47.txt, 01_random_48.txt, 01_random_49.txt, 01_random_50.txt, 01_random_51.txt, 01_random_52.txt, 01_random_53.txt, 01_random_54.txt, 01_random_55.txt, 01_random_56.txt, 01_random_57.txt, 01_random_58.txt, 01_random_59.txt, 01_random_60.txt, 01_random_61.txt, 01_random_62.txt, 01_random_63.txt, 01_random_64.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 2 ms 3652 KiB
00_sample_01.txt WA 1 ms 3552 KiB
00_sample_02.txt WA 1 ms 3632 KiB
01_random_03.txt WA 336 ms 5896 KiB
01_random_04.txt WA 335 ms 5976 KiB
01_random_05.txt WA 334 ms 6136 KiB
01_random_06.txt WA 335 ms 6024 KiB
01_random_07.txt WA 332 ms 6032 KiB
01_random_08.txt WA 337 ms 5868 KiB
01_random_09.txt WA 332 ms 6000 KiB
01_random_10.txt WA 337 ms 6116 KiB
01_random_11.txt WA 335 ms 5984 KiB
01_random_12.txt WA 337 ms 5996 KiB
01_random_13.txt WA 334 ms 5996 KiB
01_random_14.txt WA 335 ms 5964 KiB
01_random_15.txt WA 335 ms 5996 KiB
01_random_16.txt WA 52 ms 4392 KiB
01_random_17.txt WA 134 ms 4140 KiB
01_random_18.txt WA 107 ms 5020 KiB
01_random_19.txt WA 133 ms 4360 KiB
01_random_20.txt WA 141 ms 4528 KiB
01_random_21.txt WA 143 ms 4116 KiB
01_random_22.txt WA 14 ms 5520 KiB
01_random_23.txt WA 15 ms 4136 KiB
01_random_24.txt WA 319 ms 6056 KiB
01_random_25.txt WA 322 ms 6000 KiB
01_random_26.txt WA 322 ms 6024 KiB
01_random_27.txt WA 321 ms 6116 KiB
01_random_28.txt WA 319 ms 5996 KiB
01_random_29.txt WA 322 ms 5996 KiB
01_random_30.txt WA 322 ms 5868 KiB
01_random_31.txt WA 319 ms 5996 KiB
01_random_32.txt WA 71 ms 4776 KiB
01_random_33.txt WA 150 ms 5396 KiB
01_random_34.txt WA 99 ms 3952 KiB
01_random_35.txt WA 80 ms 4464 KiB
01_random_36.txt WA 160 ms 5424 KiB
01_random_37.txt WA 324 ms 5900 KiB
01_random_38.txt WA 323 ms 5976 KiB
01_random_39.txt WA 323 ms 5936 KiB
01_random_40.txt WA 323 ms 5996 KiB
01_random_41.txt WA 323 ms 6116 KiB
01_random_42.txt WA 323 ms 5968 KiB
01_random_43.txt WA 323 ms 6024 KiB
01_random_44.txt WA 324 ms 6008 KiB
01_random_45.txt WA 123 ms 5384 KiB
01_random_46.txt WA 84 ms 4832 KiB
01_random_47.txt WA 140 ms 5472 KiB
01_random_48.txt WA 123 ms 3888 KiB
01_random_49.txt WA 66 ms 4576 KiB
01_random_50.txt WA 251 ms 5948 KiB
01_random_51.txt WA 255 ms 5848 KiB
01_random_52.txt WA 253 ms 5976 KiB
01_random_53.txt WA 301 ms 6032 KiB
01_random_54.txt WA 302 ms 5868 KiB
01_random_55.txt WA 302 ms 5984 KiB
01_random_56.txt WA 303 ms 6024 KiB
01_random_57.txt WA 301 ms 5868 KiB
01_random_58.txt WA 101 ms 4440 KiB
01_random_59.txt WA 118 ms 5196 KiB
01_random_60.txt WA 114 ms 6036 KiB
01_random_61.txt WA 286 ms 6116 KiB
01_random_62.txt WA 287 ms 6116 KiB
01_random_63.txt WA 283 ms 5936 KiB
01_random_64.txt WA 22 ms 3596 KiB