/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Wrong Answer 24ms 580.0 KiB
#3 Wrong Answer 24ms 580.0 KiB

Code

#include<bits/stdc++.h>
using namespace std;
#define int             long long
#define pb              push_back
#define endl            '\n'
#define ff              first
#define ss              second
#define debug           cout<<"HERE"<<endl;
void edm()
{
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("outputtt.txt","w",stdout);
    #endif
}
int arr[200000];
int tree[800000];
int lazytree[800000];
void build(int node, int s, int e)
{
    if (s == e)
    {
        tree[node] = arr[s];
        return;
    }
    int left = node * 2 + 1;
    int right = node * 2 + 2;
    int mid = (s + e) / 2;
    build(left, s, mid);
    build(right, mid + 1, e);
    tree[node] = max(tree[left],tree[right]);
}
void propagate(int node, int s, int e)
{
    if (lazytree[node] != 0)
    {
        tree[node] += lazytree[node];
        if (s != e)
        {
            lazytree[node * 2 + 1] += lazytree[node];
            lazytree[node * 2 + 2] += lazytree[node];
        }
        lazytree[node] = 0;
    }
}

void updaterange(int node, int s, int e, int l, int r,int val)
{
    propagate(node,s,e);
    if (s > e || s > r || e < l) return;
    if(s >= l && e <= r)
    {
        tree[node] += val;
        if(s != e)
        {
            lazytree[node * 2 + 1] += val;
            lazytree[node * 2 + 2] += val;
        }
        return;
    }
    int m = (s + e) / 2;
    updaterange(node * 2 + 1, s, m, l, r, val);
    updaterange(node * 2 + 2, m + 1, e, l, r, val);
    tree[node] = max(tree[node * 2 + 1], tree[node * 2 + 2]);
}
int maxquery(int node, int s, int e, int l, int r)
{
    propagate(node, s, e);
    if (s > e || s > r || e < l) return -1; 

    if (s >= l && e <= r) return tree[node];

    int mid = (s + e) / 2;
    return max(maxquery(node * 2 + 1, s, mid, l, r),maxquery(node * 2 + 2, mid + 1, e, l, r));
}
void solve()
{
    int n;cin>>n;
    for(int i=0;i<n;i++)cin>>arr[i];
    build(0,0,n-1);
    int q;cin>>q;
    while(q--)
    {
        int a;cin>>a;
        if(a==1)
        {
            int l,r,v;cin>>l>>r>>v;
            l--;
            r--;
            updaterange(0,0,n-1,l,r,v);
        }
        else
        {
            int l,r;cin>>l>>r;
            l--;
            r--;
            cout<<maxquery(0,0,n-1,l,r)<<endl;
        }
    }
}
int32_t main()
{
    //edm();
    int t = 1;
    cin>>t;
    for(int i=1;i<=t;i++)
    {
        solve();
    }
}

Information

Submit By
Type
Submission
Problem
P1211 Range MAX
Contest
LUCC Presents Intra LU Junior Programming Contest - Replay
Language
C++17 (G++ 13.2.0)
Submit At
2025-09-02 16:40:45
Judged At
2025-09-02 16:40:45
Judged By
Score
2
Total Time
24ms
Peak Memory
580.0 KiB