#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<numeric>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<stack>
#include<deque>
#include<cmath>
#include<map>
#include<set>
using namespace std;
#define ll long long
#define ld long double
struct Node{
int sum = 0, lazy = -1, L, R;
Node *left_child = nullptr, *right_child = nullptr;
Node(int _l, int _r){
L = _l; R = _r;
}
void extend(){
if(!left_child && L != R){
int mid = (L + R) >> 1;
left_child = new Node(L, mid);
right_child = new Node(mid+1, R);
}
}
void push(){
extend();
sum = (lazy == -1 ? sum : (R - L + 1));
if(L != R){
left_child->lazy = (lazy == -1 ? left_child->lazy : lazy);
right_child->lazy = (lazy == -1 ? right_child->lazy : lazy);
}
lazy = -1;
}
void upd(int l, int r){
push();
if(r < L || R < l){
return;
}
if(l <= L && R <= r){
lazy = 1;
push();
//cout << "seg : " << L << " " << R << ", sum : " << sum << "\n";
return;
}
int mid = (L + R) >> 1;
left_child->upd(l, r);
right_child->upd(l, r);
sum = left_child->sum + right_child->sum;
}
int query(int l, int r){
push();
if(r < L || R < l){
return 0;
}
if(l <= L && R <= r){
//cout << "seg : " << L << " " << R << ", sum : " << sum << "\n";
return sum;
}
return left_child->query(l, r) + right_child->query(l, r);
}
};
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int LIM = (1 << 30) - 1;
Node *ST = new Node(0, LIM);
int M; cin >> M;
int c = 0;
while(M--){
int d, x, y; cin >> d >> x >> y; x--; y--;
if(d == 1){
c = ST->query(x + c, y + c);
cout << c << "\n";
}
else{
ST->upd(x + c, y + c);
}
}
return 0;
}
Compilation message
apple.cpp: In member function 'void Node::upd(int, int)':
apple.cpp:57:13: warning: unused variable 'mid' [-Wunused-variable]
57 | int mid = (L + R) >> 1;
| ^~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
0 ms |
212 KB |
Output is correct |
4 |
Correct |
20 ms |
8300 KB |
Output is correct |
5 |
Correct |
23 ms |
9948 KB |
Output is correct |
6 |
Correct |
22 ms |
9592 KB |
Output is correct |
7 |
Correct |
24 ms |
9968 KB |
Output is correct |
8 |
Correct |
165 ms |
74044 KB |
Output is correct |
9 |
Correct |
361 ms |
131028 KB |
Output is correct |
10 |
Correct |
350 ms |
141460 KB |
Output is correct |
11 |
Correct |
407 ms |
153540 KB |
Output is correct |
12 |
Correct |
383 ms |
158760 KB |
Output is correct |
13 |
Correct |
378 ms |
200676 KB |
Output is correct |
14 |
Correct |
420 ms |
202672 KB |
Output is correct |
15 |
Runtime error |
402 ms |
262144 KB |
Execution killed with signal 9 |
16 |
Halted |
0 ms |
0 KB |
- |