Submission #382312

# Submission time Handle Problem Language Result Execution time Memory
382312 2021-03-27T04:10:03 Z JerryLiu06 Monkey and Apple-trees (IZhO12_apple) C++11
0 / 100
520 ms 262148 KB
#include <bits/stdc++.h>

using namespace std;

struct Node {
    int sum, l, r, lazy; Node *lc, *rc;

    Node(int L, int R): sum(0), l(L), r(R), lc(NULL), rc(NULL) {}

    void pushdown() {
        if (!lazy) return ; sum = r - l + 1; int mid = (l + r) / 2;

        if (l < r) { if (!lc) lc = new Node(l, mid); lc -> lazy = lazy; if (!rc) rc = new Node(mid + 1, r); rc -> lazy = lazy; } lazy = 0;
    }
    void update(int tl, int tr) { int mid = (l + r) / 2;
        pushdown(); if (l > tr || r < tl) return ; if (tl <= l && r <= tr) { lazy = 1; return ; }

        if (tl > mid) { if (!rc) rc = new Node(mid + 1, r); rc -> update(tl, tr); }
        
        else if (tr <= mid) { if (!lc) lc = new Node(l, mid); lc -> update(tl, tr); }
        
        else { if (!lc) lc = new Node(l, mid); lc -> update(tl, mid); if (!rc) rc = new Node(mid + 1, r); rc -> update(mid + 1, tr); }
        
        if (lc) lc -> pushdown(); if (rc) rc -> pushdown();

        sum = 0; if (lc) sum += lc -> sum; if (rc) sum += rc -> sum;
    }
    int query(int tl, int tr) { int mid = (l + r) / 2;
        pushdown(); if (l > tr || r < tl) return 0; if (tl <= l && r <= tr) return sum;
        
        if (tl > mid) { return (rc) ? (rc -> query(tl, tr)) : 0; }
        
        else if (tr <= mid) { return (lc) ? (lc -> query(tl, tr)) : 0; }
        
        else { return ((lc) ? (lc -> query(tl, mid)) : 0) + ((rc) ? (rc -> query(mid + 1, tr)) : 0); }
    }
};

int M, C; Node *root;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);

    cin >> M; root = new Node(1, 1000000000);

    for (int i = 0; i < M; i++) { int D, X, Y; cin >> D >> X >> Y;

        if (D == 1) { C = root -> query(X + C, Y + C); cout << C << "\n"; }

        if (D == 2) root -> update(X + C, Y + C);
    }
}

Compilation message

apple.cpp: In member function 'void Node::pushdown()':
apple.cpp:11:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   11 |         if (!lazy) return ; sum = r - l + 1; int mid = (l + r) / 2;
      |         ^~
apple.cpp:11:29: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   11 |         if (!lazy) return ; sum = r - l + 1; int mid = (l + r) / 2;
      |                             ^~~
apple.cpp: In member function 'void Node::update(int, int)':
apple.cpp:24:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   24 |         if (lc) lc -> pushdown(); if (rc) rc -> pushdown();
      |         ^~
apple.cpp:24:35: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   24 |         if (lc) lc -> pushdown(); if (rc) rc -> pushdown();
      |                                   ^~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 20 ms 7788 KB Output is correct
5 Correct 24 ms 9324 KB Output is correct
6 Correct 24 ms 9068 KB Output is correct
7 Correct 25 ms 9324 KB Output is correct
8 Correct 199 ms 69484 KB Output is correct
9 Correct 419 ms 118660 KB Output is correct
10 Correct 418 ms 132792 KB Output is correct
11 Correct 422 ms 143840 KB Output is correct
12 Correct 429 ms 148460 KB Output is correct
13 Correct 410 ms 181356 KB Output is correct
14 Correct 406 ms 183484 KB Output is correct
15 Runtime error 520 ms 262148 KB Execution killed with signal 9
16 Halted 0 ms 0 KB -