제출 #593501

#제출 시각아이디문제언어결과실행 시간메모리
593501fdnfksd원숭이와 사과 나무 (IZhO12_apple)C++14
100 / 100
252 ms139468 KiB
#include<bits/stdc++.h> using namespace std; using ll=long long; const ll maxN=5e5; struct node { ll l=0,r=0, val=0; }st[maxN*50]; ll lazy[50*maxN]; ll nnode=1; bool inter(ll x, ll y, ll i, ll j) { if(y<i||j<x) return false; return true; } void down(ll id,ll l, ll r) { if(lazy[id]>0) { lazy[id]=0; ll mid=l+r>>1; ll idl=st[id].l; ll idr=st[id].r; st[idl].val=mid-l+1; lazy[idl]=1; st[idr].val=r-mid; lazy[idr]=1; } } void update(ll id, ll l, ll r,ll i, ll j) { if(!inter(l,r,i,j)) return; if(i<=l&&r<=j) { st[id].val=r-l+1; lazy[id]=1; return; } ll mid=l+r>>1; if(st[id].l==0) { st[id].l=++nnode; st[id].r=++nnode; } down(id,l,r); update(st[id].l,l,mid,i,j); update(st[id].r,mid+1,r,i,j); st[id].val=st[st[id].l].val+st[st[id].r].val; } ll get(ll id, ll l, ll r, ll i, ll j) { if(i<=l&&r<=j) { //cout << id<<' '; return st[id].val; } ll mid=l+r>>1; //ll mid=l+r>>1; if(inter(l,r,i,j)) { if(st[id].l>0&&st[id].r>0) { down(id,l,r); return get(st[id].l,l,mid,i,j)+ get(st[id].r,mid+1,r,i,j); } else { st[id].l=++nnode; st[id].r=++nnode; down(id,l,r); return get(st[id].l,l,mid,i,j)+ get(st[id].r,mid+1,r,i,j); } } else return 0; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); ll m; cin >> m; ll c=0; for(int i=1;i<=m;i++) { ll x, y, type; cin >> type; if(type==2) { cin >> x >> y; update(1,1,1e9,x+c,y+c); } else { cin >> x >> y; c=get(1,1,1e9,x+c,y+c); cout << c<<'\n'; } } }

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

apple.cpp: In function 'void down(ll, ll, ll)':
apple.cpp:21:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   21 |         ll mid=l+r>>1;
      |                ~^~
apple.cpp: In function 'void update(ll, ll, ll, ll, ll)':
apple.cpp:39:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   39 |     ll mid=l+r>>1;
      |            ~^~
apple.cpp: In function 'll get(ll, ll, ll, ll, ll)':
apple.cpp:59:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   59 |     ll mid=l+r>>1;
      |            ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...