제출 #1088275

#제출 시각아이디문제언어결과실행 시간메모리
1088275rayan_bd원숭이와 사과 나무 (IZhO12_apple)C++17
0 / 100
1 ms348 KiB
#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+1000; struct SegTree { struct Node { ll val = 0, lazy = 0; Node* left = NULL; Node* right = NULL; }; typedef Node* root; root R = NULL; SegTree(int n) { 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); } void del(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){ delete nd; return; } ll mid = start + (end - start) / 2; del(nd->left,start,mid,l,r); del(nd->right,mid+1,end,l,r); nd->val = (nd->left ? nd->left->val : 0) + (nd->right ? nd->right->val : 0); } void update(ll l, ll r) { update(this->R, 1, mxN, l, r); } ll qry(ll l, ll r) { return qry(this->R, 1, mxN, l, r); } void del(ll l,ll r){ del(this->R,1,mxN,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; SegTree seg_tree(mxN); while(n--){ cin>>e>>l>>r; l+=prev; r+=prev; if(e==1){ prev=seg_tree.qry(l,r); if(prev>5){ seg_tree.del(p2,prev-1); p2=prev-1; } cout<<prev<<'\n'; }else if(e==2){ seg_tree.update(l,r); } } return 0; }

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

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")
      |
#Verdict Execution timeMemoryGrader output
Fetching results...