#include <bits/stdc++.h>
using namespace std;
const int N = (1<< 10) ;
int t, a, b, c;
int rip[N] ;
int occ[N] ;
int bit[N] ;
int tree[N * 4] ;
void update(int node , int L , int R , int l , int r){
if(l > r || l > R || r < L)
return ;
if(tree[node] == R - L +1){
return ;
}
if(L>=l&&R<=r){
tree[node] = R - L + 1 ;
return ;
}
int mid = ( L + R ) >> 1;
update(node*2+1 , L , mid , l , r) ;
update(node*2+2 , mid+1 , R , l ,r) ;
tree[node] = tree[node*2+1] + tree[node*2+2] ;
}
int query(int node , int L , int R , int l , int r){
if(l > r || l > R || r < L)
return 0 ;
if(tree[node] == R - L +1){
return min(r , R) - max(l , L) + 1 ;
}
if(L>=l&& R<=r){
return tree[node] ;
}
int mid = (L + R ) >> 1;
int s1 = query(node*2+1 , L , mid , l , r) ;
int s2 = query(node*2+2 , mid+1 , R , l , r) ;
return s1 + s2 ;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
//freopen("in.in", "r", stdin);
cin >> t;
int C = 0 ;
while (t--)
{
int a, b, c;
cin >> a >> b >> c;
b+= C ;
c+= C ;
if(a == 1){
int ans = query(0 , 1 , N , b , c) ;
C = ans ;
cout<< ans <<"\n" ;
}else{
update(0 , 1 , N , b , c) ;
}
}
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
384 KB |
Output is correct |
2 |
Correct |
0 ms |
384 KB |
Output is correct |
3 |
Correct |
0 ms |
384 KB |
Output is correct |
4 |
Incorrect |
3 ms |
384 KB |
Output isn't correct |
5 |
Halted |
0 ms |
0 KB |
- |