제출 #1256717

#제출 시각아이디문제언어결과실행 시간메모리
1256717keremMonkey and Apple-trees (IZhO12_apple)C++20
100 / 100
23 ms840 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define fr first #define sc second #define pb push_back #define all(x) x.begin(),x.end() #define sp << " " << #define inf 1e15 #define N 1000 mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); typedef tuple<int,int,int> tiii; typedef pair<int,int> pii; struct Node{ Node *l,*r; int val; Node(){ val=0; l=0;r=0; } }; int c=0; Node *root=new Node(); void update(Node *node,int l,int r,int ql,int qr){ if(r<ql || qr<l) return; //~ cout << l sp r << "\n"; if(ql<=l && r<=qr){ node->val=r-l+1; return; } if(node->val) return; int mid=(l+r)/2; if(mid>=ql && !node->l) node->l=new Node(); if(mid+1<=qr && !node->r) node->r=new Node(); update(node->l,l,mid,ql,qr); update(node->r,mid+1,r,ql,qr); } int query(Node *node,int l,int r,int ql,int qr){ if(r<ql || qr<l || !node) return 0; if(node->val) return min(r,qr)-max(l,ql)+1; int mid=(l+r)/2; return query(node->l,l,mid,ql,qr)+query(node->r,mid+1,r,ql,qr); } void solve(){ int t,x,y; cin >> t >> x >> y; if(t==1){ c=query(root,1,1e9,x+c,y+c); cout << c << "\n"; } if(t==2) update(root,1,1e9,x+c,y+c); } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); int test=1; cin >> test; while(test--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...