제출 #382599

#제출 시각아이디문제언어결과실행 시간메모리
382599JerryLiu06원숭이와 사과 나무 (IZhO12_apple)C++11
0 / 100
554 ms262148 KiB
#include <bits/stdc++.h>
 
using namespace std;
 
struct Node {
    int sum, l, r, lazy; Node *lc, *rc; 
     
    Node(int L, int R): sum(0), lazy(0), l(L), r(R), lc(nullptr), rc(nullptr) {}
 
    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; lc -> sum = mid - l + 1;
            
            if (!rc) rc = new Node(mid + 1, r); rc -> lazy = lazy; rc -> sum = r - mid;
        } 
        lazy = 0;
    }
    void update(int tl, int tr) { int mid = (l + r) / 2;
        pushdown(); if (tl <= l && r <= tr) { lazy = 1; pushdown(); 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, tr); if (!rc) rc = new Node(mid + 1, r); rc -> update(tl, tr); }
        
        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;
        
        return ((lc) ? (lc -> query(tl, tr)) : 0) + ((rc) ? (rc -> query(tl, 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);
    }
}

컴파일 시 표준 에러 (stderr) 메시지

apple.cpp: In constructor 'Node::Node(int, int)':
apple.cpp:6:20: warning: 'Node::lazy' will be initialized after [-Wreorder]
    6 |     int sum, l, r, lazy; Node *lc, *rc;
      |                    ^~~~
apple.cpp:6:14: warning:   'int Node::l' [-Wreorder]
    6 |     int sum, l, r, lazy; Node *lc, *rc;
      |              ^
apple.cpp:8:5: warning:   when initialized here [-Wreorder]
    8 |     Node(int L, int R): sum(0), lazy(0), l(L), r(R), lc(nullptr), rc(nullptr) {}
      |     ^~~~
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:14:13: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   14 |             if (!lc) lc = new Node(l, mid); lc -> lazy = lazy; lc -> sum = mid - l + 1;
      |             ^~
apple.cpp:14:45: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   14 |             if (!lc) lc = new Node(l, mid); lc -> lazy = lazy; lc -> sum = mid - l + 1;
      |                                             ^~
apple.cpp:16:13: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   16 |             if (!rc) rc = new Node(mid + 1, r); rc -> lazy = lazy; rc -> sum = r - mid;
      |             ^~
apple.cpp:16:49: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   16 |             if (!rc) rc = new Node(mid + 1, r); rc -> lazy = lazy; rc -> sum = r - mid;
      |                                                 ^~
apple.cpp: In member function 'int Node::query(int, int)':
apple.cpp:31:37: warning: unused variable 'mid' [-Wunused-variable]
   31 |     int query(int tl, int tr) { int mid = (l + r) / 2;
      |                                     ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...