Submission #1252311

#TimeUsernameProblemLanguageResultExecution timeMemory
1252311hossainrasel1042Monkey and Apple-trees (IZhO12_apple)C++20
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int L=1; int R=1e9+10; struct Node{ Node *l; Node *r; int val; int lazy; Node():val(0),lazy(0),l(nullptr),r(nullptr){}; }; void push(Node *root,int l,int r){ if(!root || !root->lazy)return; root->val=(r-l+1); if(l!=r){ if(!root->l)root->l=new Node(); if(!root->r)root->r=new Node(); root->l->lazy=1; root->r->lazy=1; } root->lazy=0; } void update(Node *&root,int l,int r,int ql,int qr){ if(r<ql || l>qr)return; if(!root)root=new Node(); push(root,l,r); if(l>=ql && r<=qr){ root->lazy=1; push(root,l,r); return; } int mid=(l+r)>>1; update(root->l,l,mid,ql,qr); update(root->r,mid+1,r,ql,qr); root->val=(root->l?root->l->val:0)+(root->r?root->r->val:0); } int query(Node* root,int l,int r,int ql,int qr){ if(!root || r<ql || l>qr)return 0; push(root,l,r); if(l>=ql && r<=qr)return (root?root->val:0); int mid=(l+r)>>1; return query(root->l,l,mid,ql,qr)+query(root->r,mid+1,r,ql,qr); } signed main(){ int t; int c=0; Node *node=nullptr; cin>>t; while(t--){ int type,l,r; cin>>type>>l>>r; if(type==1){ c=query(node,L,R,l+c,r+c); cout<<c<<endl; }else{ update(node,L,R,l+c,r+c); } } }
#Verdict Execution timeMemoryGrader output
Fetching results...