Submission #89812

#TimeUsernameProblemLanguageResultExecution timeMemory
89812VardanyanMonkey and Apple-trees (IZhO12_apple)C++17
100 / 100
935 ms261036 KiB
#include <bits/stdc++.h> using namespace std; struct node{ node* l; node* r; int val; int lz; node():l(NULL),r(NULL),val(0),lz(-1){} }; void push(node* v,int s,int e){ if(v->lz!=-1){ v->val = (e-s+1)*(v->lz); if(s!=e){ if(v->l == NULL){ v->l = new node(); v->r = new node(); } v->l->lz = v->lz; v->r->lz = v->lz; } } v->lz = -1; } void update(node* v,int s,int e,int l,int r,int val){ push(v,s,e); if(l>r) return; if(s == l && e == r){ v->lz = val; return; } int m = (s+e)/2; if(v->l == NULL){ v->l = new node(); v->r = new node(); } update(v->l,s,m,l,min(m,r),val); update(v->r,m+1,e,max(l,m+1),r,val); push(v->l,s,m); push(v->r,m+1,e); v->val = v->l->val+v->r->val; } int get(node* v,int s,int e,int l,int r){ if(v == NULL) return 0; push(v,s,e); if(l>r) return 0; if(s == l && e == r) return v->val; int m = (s+e)/2; return get(v->l,s,m,l,min(m,r))+ get(v->r,m+1,e,max(l,m+1),r); } int main(){ node* root; root = new node(); int m; scanf("%d",&m); int C = 0; while(m--){ int d,x,y; scanf("%d%d%d",&d,&x,&y); if(d == 1){ int ans = get(root,1,1000*1000*1000,x+C,y+C); C = ans; printf("%d\n",ans); } else{ update(root,1,1000*1000*1000,x+C,y+C,1); } } return 0; }

Compilation message (stderr)

apple.cpp: In function 'int main()':
apple.cpp:55:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&m);
     ~~~~~^~~~~~~~~
apple.cpp:59:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d",&d,&x,&y);
         ~~~~~^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...