제출 #671674

#제출 시각아이디문제언어결과실행 시간메모리
671674tolbi원숭이와 사과 나무 (IZhO12_apple)C++17
0 / 100
420 ms262144 KiB
#pragma optimize("Bismillahirrahmanirrahim") //█▀█─█──█──█▀█─█─█ //█▄█─█──█──█▄█─█■█ //█─█─█▄─█▄─█─█─█─█ //Allahuekber //ahmet23 orz... //Sani buyuk Osman Pasa Plevneden cikmam diyor. //FatihSultanMehmedHan //YavuzSultanSelimHan //AbdulhamidHan #define author tolbi #include <bits/stdc++.h> #define endl '\n' #define vint(x) vector<int> x #define deci(x) int x;cin>>x; #define decstr(x) string x;cin>>x; #define cinarr(x) for (auto &it : x) cin>>it; #define coutarr(x) for (auto &it : x) cout<<it<<" ";cout<<endl; #define sortarr(x) sort(x.begin(),x.end()) #define sortrarr(x) sort(x.rbegin(),x.rend()) #define det(x) cout<<"NO\0YES"+x*3<<endl; #define INF LONG_LONG_MAX #define rev(x) reverse(x.begin(),x.end()); #define ios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define tol(bi) (1LL<<((int)(bi))) const int MOD = 1e9+7; using namespace std; mt19937 ayahya(chrono::high_resolution_clock().now().time_since_epoch().count()); struct SegTree{ struct Node{ int val, lnode, rnode, lazy; Node():lnode(-1),rnode(-1),val(0),lazy(0){} }; vector<Node> segtree; SegTree(){ segtree.push_back(Node()); segtree[0].val=0; segtree[0].lazy=0; } void lyap(int node, int tarl, int tarr){ int mid = tarl+(tarr-tarl)/2; if (segtree[node].lnode==-1){ segtree[node].lnode=segtree.size(); segtree.push_back(Node()); } } void ryap(int node, int tarl, int tarr){ int mid = tarl+(tarr-tarl)/2; if (segtree[node].rnode==-1){ segtree[node].rnode=segtree.size(); segtree.push_back(Node()); } } void dallan(int node, int tarl, int tarr){ if (segtree[node].lazy==1){ lyap(node, tarl, tarr); ryap(node, tarl, tarr); segtree[segtree[node].lnode].lazy=1; segtree[segtree[node].rnode].lazy=1; segtree[node].val=tarr-tarl+1; } segtree[node].lazy=0; } int query(int l, int r, int tarl = 1, int tarr = 1000000000, int node = 0){ dallan(node, tarl, tarr); if (tarl>=l && tarr<=r) return segtree[node].val; if (tarl>r || tarr<l) return 0ll; int rval = 0; int mid = tarl+(tarr-tarl)/2; if (segtree[node].lnode!=-1){ rval+=query(l, r, tarl, mid, segtree[node].lnode); } if (segtree[node].rnode!=-1){ rval+=query(l, r, mid+1, tarr, segtree[node].rnode); } return rval; } void update(int l, int r, int tarl = 1, int tarr = 1000000000, int node = 0) { dallan(node, tarl, tarr); if (tarl>=l && tarr<=r){ segtree[node].lazy=1; dallan(node, tarl, tarr); return; } if (tarl>r || tarr<l) return; int mid = tarl+(tarr-tarl)/2; if (mid>=l){ lyap(node, tarl, tarr); update(l, r, tarl, mid, segtree[node].lnode); } if (mid+1<=r){ ryap(node, tarl, tarr); update(l, r, mid+1, tarr, segtree[node].rnode); } segtree[node].val=0ll; if (segtree[node].lnode!=-1){ dallan(segtree[node].lnode, tarl, mid); segtree[node].val+=segtree[segtree[node].lnode].val; } if (segtree[node].rnode!=-1){ dallan(segtree[node].rnode, mid+1, tarr); segtree[node].val+=segtree[segtree[node].rnode].val; } } }; int32_t main(){ ios; int t=1; int tno = 0; if (!t) cin>>t; while (t-(tno++)){ SegTree segtree; deci(q); int c = 0; while (q--){ deci(d); deci(l);deci(r); l+=c; r+=c; if (d==1){ c=segtree.query(l,r); cout<<c<<endl; } else { segtree.update(l,r); } } } }

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

apple.cpp:1: warning: ignoring '#pragma optimize ' [-Wunknown-pragmas]
    1 | #pragma optimize("Bismillahirrahmanirrahim")
      | 
apple.cpp: In constructor 'SegTree::Node::Node()':
apple.cpp:31:19: warning: 'SegTree::Node::rnode' will be initialized after [-Wreorder]
   31 |   int val, lnode, rnode, lazy;
      |                   ^~~~~
apple.cpp:31:7: warning:   'int SegTree::Node::val' [-Wreorder]
   31 |   int val, lnode, rnode, lazy;
      |       ^~~
apple.cpp:32:3: warning:   when initialized here [-Wreorder]
   32 |   Node():lnode(-1),rnode(-1),val(0),lazy(0){}
      |   ^~~~
apple.cpp: In member function 'void SegTree::lyap(int, int, int)':
apple.cpp:41:7: warning: unused variable 'mid' [-Wunused-variable]
   41 |   int mid = tarl+(tarr-tarl)/2;
      |       ^~~
apple.cpp: In member function 'void SegTree::ryap(int, int, int)':
apple.cpp:48:7: warning: unused variable 'mid' [-Wunused-variable]
   48 |   int mid = tarl+(tarr-tarl)/2;
      |       ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...