답안 #919210

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
919210 2024-01-31T13:03:15 Z ibrahim001 원숭이와 사과 나무 (IZhO12_apple) C++17
0 / 100
28 ms 13576 KB
#include "bits/stdc++.h"
#define intt long long
using namespace std;
const intt inf = 1e18;
const int sz = 1e5+5;
int st[sz<<2], lz[sz<<2], L[sz<<2], R[sz<<2];
int last=1;
void check(int in){
    if ( !L[in] )   L[in] = ++last;
    if ( !R[in] )   R[in] = ++last;
}
void relax(int l, int r, int in){
    if ( !lz[in] )  return;
    st[in] = (r-l+1);
    if ( l == r ){
        lz[in]=0;
        return;
    }
    check(in);
    lz[L[in]] += lz[in];
    lz[R[in]] += lz[in];
    lz[in]=0;
}
void update(int a, int b, int l, int r, int in){
    relax(l, r, in);
    if ( l > b or r < a )   return;
    if ( a <= l and r <= b ){
        lz[in]++;
        relax(l, r, in);
        return;
    }
    check(in);
    int mid = (l+r)>>1;
    update(a, b, l, mid, L[in]);
    update(a, b, mid+1, r, R[in]);
    st[in] = st[L[in]]+st[R[in]];
}
int getans(int a, int b, int l, int r, int in){
    relax(l, r, in);
    if ( l > b or r < a )   return 0;
    if ( a <= l and r <= b )    return st[in];
    check(in);
    int mid = (l+r)>>1;
    return getans(a, b, l, mid, L[in])+getans(a, b, mid+1, r, R[in]);
}
int i,j;
signed main(){
    int n=1e9, q;
    cin >> q;
    int c = 0;
    while(q--){
        int t;
        cin >> t;
        int x, y;
        cin >> x >> y;
        x += c;
        y += c;
        if ( t == 1 ){
            int res = getans(x , y, 1, n, 1);
            c = res;
            cout << res << endl;
        }
        else{
            update(x, y, 1, n, 1);
        }
    }
}


# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 20 ms 3420 KB Output is correct
5 Correct 24 ms 3928 KB Output is correct
6 Correct 28 ms 3672 KB Output is correct
7 Correct 23 ms 3752 KB Output is correct
8 Runtime error 27 ms 13576 KB Execution killed with signal 11
9 Halted 0 ms 0 KB -