/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 532.0 KiB
#2 Accepted 7ms 532.0 KiB
#3 Accepted 8ms 532.0 KiB
#4 Accepted 8ms 608.0 KiB
#5 Accepted 9ms 532.0 KiB
#6 Accepted 12ms 580.0 KiB
#7 Accepted 12ms 608.0 KiB
#8 Accepted 12ms 532.0 KiB
#9 Accepted 12ms 532.0 KiB
#10 Accepted 12ms 532.0 KiB
#11 Accepted 12ms 532.0 KiB
#12 Accepted 12ms 532.0 KiB
#13 Accepted 18ms 580.0 KiB
#14 Accepted 23ms 532.0 KiB
#15 Accepted 16ms 600.0 KiB
#16 Accepted 23ms 576.0 KiB
#17 Accepted 23ms 532.0 KiB
#18 Accepted 12ms 596.0 KiB
#19 Accepted 12ms 544.0 KiB
#20 Accepted 12ms 592.0 KiB
#21 Accepted 14ms 536.0 KiB
#22 Accepted 23ms 612.0 KiB
#23 Accepted 10ms 596.0 KiB
#24 Accepted 10ms 532.0 KiB
#25 Accepted 10ms 532.0 KiB
#26 Accepted 23ms 532.0 KiB
#27 Accepted 23ms 532.0 KiB
#28 Accepted 16ms 592.0 KiB
#29 Accepted 10ms 532.0 KiB
#30 Accepted 10ms 604.0 KiB
#31 Accepted 12ms 532.0 KiB
#32 Accepted 11ms 532.0 KiB
#33 Accepted 13ms 536.0 KiB
#34 Accepted 14ms 616.0 KiB
#35 Accepted 17ms 612.0 KiB
#36 Accepted 17ms 616.0 KiB
#37 Accepted 17ms 580.0 KiB
#38 Accepted 17ms 532.0 KiB
#39 Accepted 10ms 608.0 KiB
#40 Accepted 23ms 580.0 KiB
#41 Accepted 22ms 576.0 KiB
#42 Accepted 99ms 8.02 MiB
#43 Accepted 96ms 7.828 MiB
#44 Accepted 97ms 7.812 MiB
#45 Accepted 122ms 8.02 MiB
#46 Accepted 96ms 7.812 MiB
#47 Accepted 91ms 8.023 MiB
#48 Accepted 120ms 7.816 MiB
#49 Accepted 94ms 7.816 MiB
#50 Accepted 94ms 7.82 MiB

Code

/// Md Abdur Rahman Salman ///

#include<bits/stdc++.h>
using namespace std;

#define endl "\n"
#define ll long long
#define bug(x) cout << #x << ": " << x << endl
const ll INF = -1e18;
int n;
vector<ll> a, tree, lazy;
void push(int node, int start, int end) 
{
    if(lazy[node] != 0) 
    {
        tree[node] += lazy[node];
        if(start != end)
        {
            lazy[2 * node] += lazy[node];
            lazy[2 * node + 1] += lazy[node];
        }
        lazy[node] = 0;
    }
}
void build(int node, int start, int end) 
{
    if(start == end) 
    {
        tree[node] = a[start];
        return;
    }
    int mid = start + (end - start) / 2;
    build(2 * node, start, mid);
    build(2 * node + 1, mid + 1, end);
    tree[node] = max(tree[2 * node], tree[2 * node + 1]);
}
void updateRange(int node, int start, int end, int l, int r, int x) 
{
    push(node, start, end);
    if(start > end || start > r || end < l) return;
    if(l <= start && end <= r)
    {
        lazy[node] += x;
        push(node, start, end);
        return;
    }
    int mid = start + (end - start) / 2;
    updateRange(2 * node, start, mid, l, r, x);
    updateRange(2 * node + 1, mid + 1, end, l, r, x);
    tree[node] = max(tree[2 * node], tree[2 * node + 1]);
}
ll queryRange(int node, int start, int end, int l, int r)
{
    if(start > end || start > r || end < l) return INF;
    push(node, start, end);
    if(l <= start && end <= r) return tree[node];
    int mid = start + (end - start) / 2;
    ll p1 = queryRange(2 * node, start, mid, l, r);
    ll p2 = queryRange(2 * node + 1, mid + 1, end, l, r);
    return max(p1, p2);
}
int32_t main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    int t; cin >> t;
    while(t--)
    {
        cin >> n;
        a.resize(n + 1);
        for(int i = 1; i <= n; i++) cin >> a[i];
        tree.assign(4 * n + 4, 0);
        lazy.assign(4 * n + 4, 0);
        build(1, 1, n);
        int q; cin >> q;
        while(q--)
        {
            int val; cin >> val;
            if(val == 1) 
            {
                int l, r, x;
                cin >> l >> r >> x;
                updateRange(1, 1, n, l, r, x);
            } 
            else
            {
                int l, r; cin >> l >> r;
                cout << queryRange(1, 1, n, l, r) << endl;
            }
        }
    }
    return 0;
}

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:22:28
Judged At
2025-09-02 16:22:28
Judged By
Score
100
Total Time
122ms
Peak Memory
8.023 MiB