Submission #989617

#TimeUsernameProblemLanguageResultExecution timeMemory
989617AliHasanliMonkey and Apple-trees (IZhO12_apple)C++17
100 / 100
446 ms262144 KiB
#include <iostream> using namespace std; long long seg[10000000],L[10000000],R[10000000],lazy[10000000],ind=1; void create(long long n,long long l,long long r) { if(l<r && !L[n])L[n]=++ind; if(l<r && !R[n])R[n]=++ind; } void push(long long n,long long l,long long r) { create(n,l,r); if(lazy[n]) { seg[n]=r-l+1; if(l!=r){ lazy[L[n]]=1; lazy[R[n]]=1;} } lazy[n]=0; } void update(long long n,long long l,long long r,long long ql,long long qr) { push(n,l,r); if(l>r || ql>qr || ql>r || l>qr)return; if(ql<=l && r<=qr) { lazy[n]=1; push(n,l,r); return ; } if(L[n])update(L[n],l,(l+r)/2,ql,qr);if(R[n])update(R[n],(l+r)/2+1,r,ql,qr); seg[n]=seg[L[n]]+seg[R[n]]; } long long query(long long n,long long l,long long r,long long ql,long long qr) { long long ans=0; push(n,l,r); if(l>r || ql>qr || ql>r || l>qr)return 0; if(ql<=l && r<=qr) return seg[n]; if(L[n])ans+=query(L[n],l,(l+r)/2,ql,qr); if(R[n])ans+=query(R[n],(l+r)/2+1,r,ql,qr); return ans; } int main() { int m; cin>>m; long long ans=0; while(m--) { long long t,l,r; cin>>t>>l>>r; l+=ans; r+=ans; if(t==2) update(1,1,1e9,l,r); else cout<<query(1,1,1e9,l,r)<<endl,ans=query(1,1,1e9,l,r); } return 0; }

Compilation message (stderr)

apple.cpp: In function 'void update(long long int, long long int, long long int, long long int, long long int)':
apple.cpp:31:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   31 |     if(L[n])update(L[n],l,(l+r)/2,ql,qr);if(R[n])update(R[n],(l+r)/2+1,r,ql,qr);
      |     ^~
apple.cpp:31:42: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   31 |     if(L[n])update(L[n],l,(l+r)/2,ql,qr);if(R[n])update(R[n],(l+r)/2+1,r,ql,qr);
      |                                          ^~
#Verdict Execution timeMemoryGrader output
Fetching results...