제출 #502412

#제출 시각아이디문제언어결과실행 시간메모리
502412reni원숭이와 사과 나무 (IZhO12_apple)C++14
100 / 100
298 ms137540 KiB
#include<iostream> #define endl '\n' #include<bits/stdc++.h> using namespace std; struct str { int l=0, r=0, lazy=0, sum=0; }tree[10000005]; int last=2; void update(int le,int ri,int l,int r,int ind) { if(!tree[ind].l)tree[ind].l=last++; if(!tree[ind].r)tree[ind].r=last++; if(l<=le && ri<=r){tree[ind].lazy=1;} if(tree[ind].lazy) { tree[ind].sum=(ri-le+1); tree[tree[ind].l].lazy=1; tree[tree[ind].r].lazy=1; tree[ind].lazy=0; } if(l>ri || r<le)return; if(l<=le && ri<=r)return; int mid=(le+ri)/2; update(le,mid,l,r,tree[ind].l); update(mid+1,ri,l,r,tree[ind].r); tree[ind].sum=tree[tree[ind].l].sum+tree[tree[ind].r].sum; } int query(int le,int ri,int l,int r,int ind) { if(!tree[ind].l)tree[ind].l=last++; if(!tree[ind].r)tree[ind].r=last++; if(tree[ind].lazy) { tree[ind].sum=(ri-le+1); tree[tree[ind].l].lazy=1; tree[tree[ind].r].lazy=1; tree[ind].lazy=0; } if(l<=le && ri<=r){return tree[ind].sum;} if(l>ri || r<le)return 0; int mid=(le+ri)/2; int r1=0, r2=0; if(tree[ind].l)r1=query(le,mid,l,r,tree[ind].l); if(tree[ind].r)r2=query(mid+1,ri,l,r,tree[ind].r); tree[ind].sum=tree[tree[ind].l].sum+tree[tree[ind].r].sum; return r1+r2; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int i,j,t,l,r,m,c=0; cin>>m; for(i=0;i<m;i++) { cin>>t>>l>>r; l+=c; r+=c; if(t==2) { update(1,1000000002,l,r,1); } else{ c=query(1,1000000002,l,r,1); cout<<c<<endl; } } }

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

apple.cpp: In function 'int main()':
apple.cpp:74:11: warning: unused variable 'j' [-Wunused-variable]
   74 |     int i,j,t,l,r,m,c=0;
      |           ^
#Verdict Execution timeMemoryGrader output
Fetching results...