답안 #254050

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
254050 2020-07-29T09:27:22 Z test2 원숭이와 사과 나무 (IZhO12_apple) C++14
0 / 100
12 ms 13824 KB
#include <bits/stdc++.h>

using namespace std;

const int N = (1 << 21);
int t, a, b, c;
int rip[N];

int occ[N];
int bit[N];

int tree[N * 4];
int lazy[N * 4];

void update(int node, int L, int R, int l, int r)
{
        if (l > r || l > R || r < L)
                return;
        if (L >= l && R <= r)
        {
                lazy[node] = 1;
                tree[node] = R - L + 1;
                return;
        }
        int mid = (L + R) >> 1;
        update(node * 2 + 1, L, mid, l, r);
        update(node * 2 + 2, mid + 1, R, l, r);
        tree[node] = tree[node * 2 + 1] + tree[node * 2 + 2];
}

int query(int node, int L, int R, int l, int r)
{
        if (l > r || l > R || r < L)
                return 0;
        if (lazy[node])
        {
                return min(r, R) - max(l, L) + 1;
        }

        if (L >= l && R <= r)
        {
                return tree[node];
        }

        int mid = (L + R) >> 1;
        int s1 = query(node * 2 + 1, L, mid, l, r);
        int s2 = query(node * 2 + 2, mid + 1, R, l, r);
        return s1 + s2;
}

int main()
{
        ios_base::sync_with_stdio(0);
        cin.tie(0);
        //freopen("in.in", "r", stdin);

        cin >> t;
        int C = 0;
        while (t--)
        {
                int a, b, c;
                cin >> a >> b >> c;
                b += C;
                c += C;
                if (a == 1)
                {
                        int ans = query(0, 1, N, b, c);
                        C = ans;
                        cout << ans << "\n";
                }
                else
                {
                        update(0, 1, N, b, c);
                }
        }

        return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 1 ms 384 KB Output is correct
4 Incorrect 12 ms 13824 KB Output isn't correct
5 Halted 0 ms 0 KB -