# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
331366 | ronnith | Monkey and Apple-trees (IZhO12_apple) | C++14 | 704 ms | 262148 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i = (a);i < (b);i ++)
#define FORd(i,b,a) for(int i = (b);i >= (a);i --)
#define trav(a,b) for(auto a:b)
#define pb push_back
#define mk make_pair
#define f first
#define s second
#define sz(a) (a).size()
#define maxn 100000
using ll = long long;
using namespace std;
ll modF = 1e9 + 7;
void setIO(string s = ""){
ios::sync_with_stdio(0);cin.tie(0);
if(sz(s)){
freopen((s + ".in").c_str(),"r",stdin);
freopen((s + ".out").c_str(),"w",stdout);
}
}
int MX = 1e9 + 10;
struct node{
int val, lazy;
node *right, *left;
node():val(0), lazy(0){}
void extend(){
if(left != nullptr)return;
left = new node();
right = new node();
}
void propogate(int l, int r){
if(lazy == 0)return;
val = r - l + 1;
left->lazy = right->lazy = 1;
lazy = 0;
}
void pull(){
if(left == nullptr)return;
val = left->val + right->val;
}
};
struct Segtree{
node* root;
Segtree(){
root = new node();
}
void update(node* crr, int l, int r, int lx, int rx){
crr->extend();crr->propogate(lx, rx);
if(rx < l or r < lx)return;
if(l <= lx and rx <= r){
crr->lazy = 1;crr->propogate(lx, rx);return;
}
int mid = lx + (rx - lx) / 2;
update(crr->left, l, r, lx, mid);
update(crr->right, l, r, mid + 1, rx);
crr->pull();
}
int query(node* crr, int l, int r, int lx, int rx){
crr->extend();crr->propogate(lx, rx);
if(rx < l or lx > r)return 0;
if(l <= lx and rx <= r)return crr->val;
int mid = lx + (rx - lx) / 2;
return query(crr->left, l, r, lx, mid) + query(crr->right, l, r, mid + 1, rx);
}
};
int M;
int main(){
setIO();
cin >> M;
Segtree sg;
int prev = 0;
while(M --){
int t;
cin >> t;
if(t == 1){
int x, y;
cin >> x >> y;
x += prev, y += prev;
cout << (prev = sg.query(sg.root, x, y, 1, MX)) << '\n';
} else {
int x, y;
cin >> x >> y;
x += prev, y += prev;
sg.update(sg.root, x, y, 1, MX);
}
}
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |