Submission #426790

#TimeUsernameProblemLanguageResultExecution timeMemory
426790jeqchoMonkey and Apple-trees (IZhO12_apple)C++17
0 / 100
1 ms332 KiB
#include <bits/stdc++.h> using namespace std; typedef long double ld; typedef long long ll; typedef pair<int,int> pii; typedef vector<int> vi; typedef vector<pair<int,int>> vpi; #define FOR(i,a,b) for (int i = (a); i < (b); ++i) #define F0R(i,a) FOR(i,0,a) #define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i) #define R0F(i,a) ROF(i,0,a) #define trav(a,x) for (auto& a: x) #define pb push_back #define rsz resize #define sz(x) int(x.size()) #define all(x) begin(x), end(x) #define fi first #define se second int t=0; struct node { int lx,rx; int val=0; bool lazy=0; node *lefchi=NULL,*rigchi=NULL; int comb(int a,int b){return a+b;} void extend() { if(!lefchi && rx-lx!=1) { int md=(lx+rx)/2; lefchi=new node({lx,md}); rigchi=new node({md,rx}); t+=2; assert(t<1e7); } } void refresh() { if(!lazy)return; val=rx-lx; lazy=0; } void push() { if(!lazy)return; refresh(); if(rx-lx==1)return; extend(); lefchi->lazy = 1; rigchi->lazy = 1; } int query(int lq,int rq) { if(lq>=rx || rq<=lx)return 0; refresh(); if(lq<=lx && rq>=rx)return val; push(); int lef = lefchi->query(lq,rq); int rig = rigchi->query(lq,rq); return comb(lef,rig); } void update(int lq,int rq) { if(lq>=rx || rq<=lx)return; push(); if(lq<=lx && rq>=rx) { lazy=1; return; } extend(); lefchi->update(lq,rq); rigchi->update(lq,rq); val = comb(lefchi->query(0,1<<30),rigchi->query(0,1<<30)); } }; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int m; cin>>m; int c=0; node seg({0,1<<30}); ++t; while(m--) { int d,x,y; cin>>d>>x>>y; if(d==1) { c=seg.query(c+x,c+y+1); cout<<c<<'\n'; } else { seg.update(c+x,c+y+1); } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...