Submission #649563

#TimeUsernameProblemLanguageResultExecution timeMemory
649563lalala56Monkey and Apple-trees (IZhO12_apple)C++14
0 / 100
389 ms262144 KiB
#include<bits/stdc++.h> using namespace std; const int M=1e9,N=1e5+9; struct Node{ int sum,la,l,r,sl,sr; Node(): sum(0),la(0),l(-1),r(-1){} }; Node ST[64*N]; int n,c,cnt=2; void tao(int id,int m){ //cout<<m<<'\n'; if(ST[id].l==-1){ ST[id].l=cnt++; ST[ST[id].l].sl=ST[id].sl; ST[ST[id].l].sr=m; } if(ST[id].r==-1){ ST[id].r=cnt++; ST[ST[id].r].sl=m+1; ST[ST[id].r].sr=ST[id].sr; } } void down(int id){ if(ST[id].la){ ST[id].sum=ST[id].sr-ST[id].sl+1; int m=(ST[id].sl+ST[id].sr)/2; tao(id,m); ST[ST[id].l].la=ST[ST[id].r].la=1; ST[id].la=0; } } void upd(int id,int l,int r){ //cout<<id<<" "<<ST[id].sl<<" "<<ST[id].sr<<'\n'; down(id); if(l==ST[id].sl&&r==ST[id].sr){ //ST[id].sum=ST[id].sr-ST[id].sl+1; ST[id].la=1; down(id); return; } down(id); int m=(ST[id].sl+ST[id].sr)/2; tao(id,m); if(l>m)upd(ST[id].r,l,r); else if(r<=m)upd(ST[id].l,l,r); else{ upd(ST[id].l,l,m); upd(ST[id].r,m+1,r); } down(ST[id].l); down(ST[id].r); ST[id].sum=ST[ST[id].l].sum+ST[ST[id].r].sum; } int findd(int id,int l,int r){ down(id); if(l==ST[id].sl&&r==ST[id].sr)return ST[id].sum; int m=(ST[id].sl+ST[id].sr)/2; tao(id,m); if(l>m)return findd(ST[id].r,l,r); else if(r<=m)return findd(ST[id].l,l,r); else return findd(ST[id].l,l,m)+findd(ST[id].r,m+1,r); } void giai(){ cin>>n; int k,x,y; c=0; ST[1].sum=0;ST[1].la=0; ST[1].sl=1;ST[1].sr=M; while(n--){ cin>>k>>x>>y; if(k==1){ c=findd(1,x+c,y+c); cout<<c<<'\n'; } else upd(1,x+c,y+c); // cout<<"L\n"; } } int main(){ if(fopen("solve.inp","r")){ freopen("solve.inp","r",stdin); freopen("solve.out","w",stdout); } ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); giai(); }

Compilation message (stderr)

apple.cpp: In function 'int main()':
apple.cpp:83:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   83 |         freopen("solve.inp","r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
apple.cpp:84:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   84 |         freopen("solve.out","w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...