답안 #1088279

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1088279 2024-09-14T07:43:59 Z rayan_bd 원숭이와 사과 나무 (IZhO12_apple) C++17
0 / 100
307 ms 262144 KB
#include <bits/stdc++.h>

using namespace std;

#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#pragma GCC optimization("Ofast")

#define ll long long

const int mxN = 1e9+100;

struct Node {
    ll val = 0, lazy = 0;
    Node* left = NULL;
    Node* right = NULL;
};

typedef Node* root;
root R = new Node;

void push(root nd, ll l, ll r) {
    if (!nd || nd->lazy == 0) return;
    nd->val = (r - l + 1) * nd->lazy;
    if (r - l > 0) {
        if (nd->left == NULL) nd->left = new Node;
        if (nd->right == NULL) nd->right = new Node;
        nd->left->lazy = nd->lazy;
        nd->right->lazy = nd->lazy;
    }
    nd->lazy = 0; 
}

void update(root nd, ll start, ll end, ll l, ll r) {
    if (!nd) return;
    push(nd, start, end);
    if (start > r || end < l) return;
    if (start >= l && end <= r) {
        nd->lazy = 1; 
        push(nd, start, end); 
        return;
    }
    ll mid = start + (end - start) / 2;
    if (nd->left == NULL) nd->left = new Node;
    if (nd->right == NULL) nd->right = new Node;
    update(nd->left, start, mid, l, r);
    update(nd->right, mid + 1, end, l, r);
    nd->val = (nd->left ? nd->left->val : 0) + (nd->right ? nd->right->val : 0);
}

ll qry(root nd, ll start, ll end, ll l, ll r) {
    if (!nd) return 0;
    push(nd, start, end);
    if (start > r || end < l) return 0;
    if (start >= l && end <= r) return nd->val;
    ll mid = start + (end - start) / 2;
    return qry(nd->left, start, mid, l, r) + qry(nd->right, mid + 1, end, l, r);
}

signed main() {

    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    

    ll n,prev=0,p2=1,e,l,r;cin>>n;

    while(n--){
    	cin>>e>>l>>r;
    	l+=prev;
    	r+=prev;
    	if(e==1){
    		prev=qry(R,1,mxN,l,r);
    		cout<<prev<<'\n';
    	}else if(e==2){
    		update(R,1,mxN,l,r);
    	}
    }

    return 0;
}

Compilation message

apple.cpp:6: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    6 | #pragma GCC optimization ("O3")
      | 
apple.cpp:7: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    7 | #pragma GCC optimization ("unroll-loops")
      | 
apple.cpp:8: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    8 | #pragma GCC optimization("Ofast")
      | 
apple.cpp: In function 'int main()':
apple.cpp:67:17: warning: unused variable 'p2' [-Wunused-variable]
   67 |     ll n,prev=0,p2=1,e,l,r;cin>>n;
      |                 ^~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 14 ms 8652 KB Output is correct
5 Correct 17 ms 10332 KB Output is correct
6 Correct 17 ms 9960 KB Output is correct
7 Correct 22 ms 10476 KB Output is correct
8 Correct 131 ms 76948 KB Output is correct
9 Correct 262 ms 130896 KB Output is correct
10 Correct 282 ms 146768 KB Output is correct
11 Correct 273 ms 159316 KB Output is correct
12 Correct 289 ms 164768 KB Output is correct
13 Correct 272 ms 205140 KB Output is correct
14 Correct 276 ms 207184 KB Output is correct
15 Runtime error 307 ms 262144 KB Execution killed with signal 9
16 Halted 0 ms 0 KB -