/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 528.0 KiB
#2 Accepted 7ms 612.0 KiB
#3 Accepted 7ms 532.0 KiB
#4 Accepted 7ms 532.0 KiB
#5 Accepted 8ms 580.0 KiB
#6 Accepted 9ms 612.0 KiB
#7 Accepted 9ms 576.0 KiB
#8 Accepted 9ms 532.0 KiB
#9 Accepted 9ms 584.0 KiB
#10 Accepted 10ms 536.0 KiB
#11 Accepted 10ms 592.0 KiB
#12 Accepted 10ms 576.0 KiB
#13 Accepted 10ms 764.0 KiB
#14 Accepted 10ms 580.0 KiB
#15 Accepted 12ms 532.0 KiB
#16 Accepted 12ms 580.0 KiB
#17 Accepted 12ms 592.0 KiB
#18 Accepted 13ms 788.0 KiB
#19 Accepted 12ms 584.0 KiB
#20 Accepted 12ms 600.0 KiB
#21 Accepted 12ms 608.0 KiB
#22 Accepted 22ms 536.0 KiB
#23 Accepted 23ms 532.0 KiB
#24 Accepted 9ms 532.0 KiB
#25 Accepted 9ms 532.0 KiB
#26 Accepted 9ms 532.0 KiB
#27 Accepted 9ms 576.0 KiB
#28 Accepted 9ms 532.0 KiB
#29 Accepted 9ms 532.0 KiB
#30 Accepted 11ms 580.0 KiB
#31 Accepted 11ms 576.0 KiB
#32 Accepted 13ms 608.0 KiB
#33 Accepted 16ms 532.0 KiB
#34 Accepted 17ms 596.0 KiB
#35 Accepted 20ms 580.0 KiB
#36 Accepted 12ms 580.0 KiB
#37 Accepted 9ms 532.0 KiB
#38 Accepted 9ms 580.0 KiB
#39 Accepted 11ms 588.0 KiB
#40 Accepted 11ms 532.0 KiB
#41 Accepted 11ms 624.0 KiB
#42 Accepted 91ms 7.945 MiB
#43 Accepted 112ms 7.773 MiB
#44 Accepted 91ms 7.949 MiB
#45 Accepted 119ms 7.781 MiB
#46 Accepted 116ms 8.012 MiB
#47 Accepted 92ms 7.797 MiB
#48 Accepted 111ms 8.02 MiB
#49 Accepted 92ms 8.02 MiB
#50 Accepted 86ms 7.812 MiB

Code

#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;

#ifdef velox
#include "debug.h"
#else
#define dbg(x...)
#endif

#define srt(v) sort(v.begin(),v.end())
#define grtsrt(v) sort(v.begin(),v.end(),greater<ll>())
#define unq(v) v.erase(unique(v.begin(),v.end()),v.end())
#define rev(v) reverse(v.begin(),v.end())
#define set_bits(x) __builtin_popcountll(x)
#define fst_zero(x) 63-__builtin_ctzll(x)
#define lst_zero(x) __builtin_ctzll(x)
#define gcd(x,y) __gcd(x,y)
#define lcm(x,y) ((x/gcd(x,y))*y)
#define YES cout << "YES" << endl
#define NO cout << "NO" << endl
#define ceil(x,y) ((x+y-1)/y)
#define ll long long
#define pb push_back
#define endl '\n'
#define fx(x) fixed<<setprecision(x)
template <typename T> using pbds = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
const ll MOD = 1e9+7;

void file(){
    #ifdef velox
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    freopen("error.txt","w",stderr);
    #endif
}



 
const ll N = 1e5+10;
vector<ll> v,t,lazy;

void marge(ll n, ll b, ll e){
    if(lazy[n]==0) return;
 
    t[n]+=lazy[n];
    if(b!=e){
        ll l=n*2;
        ll r=(n*2)+1;
        lazy[l]+=lazy[n];
        lazy[r]+=lazy[n];
    }
    lazy[n]=0;
}
 
 
void make(ll n,ll b, ll e){
    lazy[n]=0;
    if(b==e){
        t[n]=v[b];
        return;
    }
 
    ll mid=(b+e)/2;
    ll l=(n*2);
    ll r=(n*2)+1;
 
    make(l,b,mid);
    make(r,mid+1,e);
    t[n]= max(t[l],t[r]);
}
 
 
void update(ll n,ll b,ll e, ll i,ll j, ll val){
    marge(n,b,e); // lazy
    if(i>e || j<b) return;
 
    if(i<=b && j>=e){
        lazy[n] += val;
        marge(n,b,e); // lazy
        return;
    }
 
    ll mid=(b+e)/2;
    ll l=(n*2);
    ll r=(n*2)+1;
 
    update(l,b,mid,i,j,val);
    update(r,mid+1,e,i,j,val);
    t[n]= max(t[l],t[r]);
 
}
 
 
ll query(ll n, ll b, ll e, ll i, ll j){
    marge(n,b,e); // lazy
    if(i>e || j<b) return LLONG_MIN;
 
    if(i<=b && j>=e) return t[n];
 
    ll mid=(b+e)/2;
    ll l=(n*2);
    ll r=(n*2)+1;
 
    return max(query(l,b,mid,i,j),query(r,mid+1,e,i,j));
}



int main(){
    // file();
    ios_base::sync_with_stdio(0); cin.tie(0);
    ll tt=1;
    cin >> tt;
    while(tt--){
        ll len;  cin >> len;
        v.assign(len+1, 0);
        t.assign(4*(len+1), 0);
        lazy.assign(4*(len+1), 0);
        for(int x=1; x<=len; x++) cin >> v[x];
    
    
        make(1,1,len);
        // dbg(dp);
        ll k; cin >> k;
        while(k--){
             int type; cin >> type;
            if (type == 1) {
                int l, r; ll x;
                cin >> l >> r >> x;
                update(1, 1, len, l, r, x);
            } else {
                int l, r;
                cin >> l >> r;
                cout << query(1, 1, len, l, r) << endl;
            }
        }
    }
    return 0;
}

Information

Submit By
Type
Submission
Problem
P1211 Range MAX
Language
C++17 (G++ 13.2.0)
Submit At
2025-09-02 23:01:52
Judged At
2025-09-02 23:01:52
Judged By
Score
100
Total Time
119ms
Peak Memory
8.02 MiB