답안 #691672

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
691672 2023-01-31T11:48:56 Z stevancv 원숭이와 사과 나무 (IZhO12_apple) C++14
0 / 100
0 ms 340 KB
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define sp ' '
#define en '\n'
#define smin(a, b) a = min(a, b)
#define smax(a, b) a = max(a, b)
using namespace std;
const int N = 1e5 + 2;
const int M = 1e9;
const ll linf = 1e18;
int st[30 * N], lc[30 * N], rc[30 * N], lzy[30 * N], tsz, root;
void Propagate(int c, int l, int r) {
    if (lzy[c] == 0) return;
    if (l < r) {
        if (!lc[c]) lc[c] = ++tsz;
        lzy[lc[c]] = lzy[c];
        if (!rc[c]) rc[c] = ++tsz;
        lzy[rc[c]] = lzy[c];
    }
    st[c] = r - l + 1;
    lzy[c] = 0;
}
void Set(int &c, int l, int r, int ql, int qr) {
    if (!c) c = ++tsz;
    Propagate(c, l, r);
    if (r < ql || qr < l) return;
    if (ql <= l && r <= qr) {
        lzy[c] = 1;
        Propagate(c, l, r);
        return;
    }
    int mid = l + r >> 1;
    Set(lc[c], l, mid, ql, qr);
    Set(rc[c], mid + 1, r, ql, qr);
    st[c] = st[lc[c]] + st[rc[c]];
}
int Get(int &c, int l, int r, int ql, int qr) {
    if (!c) c = ++tsz;
    Propagate(c, l, r);
    if (r < ql || qr < l) return 0;
    if (ql <= l && r <= qr) return st[c];
    int mid = l + r >> 1;
    return Get(lc[c], l, mid, ql, qr) + Get(rc[c], mid + 1, r, ql, qr);
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int q; cin >> q;
    int C = 0;
    while (q--) {
        int t, x, y;
        x += C; y += C;
        if (t == 1) {
            C = Get(root, 1, M, x, y);
            cout << C << en;
        }
        else Set(root, 1, M, x, y);
    }
    return 0;
}

Compilation message

apple.cpp: In function 'void Set(int&, int, int, int, int)':
apple.cpp:33:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   33 |     int mid = l + r >> 1;
      |               ~~^~~
apple.cpp: In function 'int Get(int&, int, int, int, int)':
apple.cpp:43:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   43 |     int mid = l + r >> 1;
      |               ~~^~~
apple.cpp: In function 'int main()':
apple.cpp:55:9: warning: 't' may be used uninitialized in this function [-Wmaybe-uninitialized]
   55 |         if (t == 1) {
      |         ^~
apple.cpp:54:19: warning: 'y' may be used uninitialized in this function [-Wmaybe-uninitialized]
   54 |         x += C; y += C;
      |                 ~~^~~~
apple.cpp:54:11: warning: 'x' may be used uninitialized in this function [-Wmaybe-uninitialized]
   54 |         x += C; y += C;
      |         ~~^~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -