#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
using namespace std;
struct node{
int l;
int r;
int val=0;
int has=0;
node *le=nullptr;
node *ri=nullptr;
};
void update(node *&curr, int l, int r, int ql, int qr){
if(!curr) curr=new node();
if(qr<l || r<ql) return;
if(curr->val==r-l+1){
return;
}
if(ql<=l && r<=qr){
curr->val=r-l+1;
return;
}
int mid=(l+r)/2;
update(curr->le, l, mid, ql, qr);
update(curr->ri, mid+1, r, ql, qr);
curr->val=curr->le->val+curr->ri->val;
}
void prop(node *curr, int l, int r){
if(l==r){
return;
}
if(!(curr->le)){
curr->le=new node();
}
if(!(curr->ri)){
curr->ri=new node();
}
int mid=(l+r)/2;
if(curr->val==r-l+1){
curr->le->val=mid-l+1;
curr->ri->val=r-(mid+1)+1;
}
if(curr->val==0){
curr->le->val=0;
curr->ri->val=0;
}
}
int query(node *curr, int l, int r, int ql, int qr){
if(qr<l || r<ql) return 0;
if(ql<=l && r<=qr) return curr->val;
int mid=(l+r)/2;
prop(curr, l, r);
int kk=query(curr->le, l, mid, ql, qr)+query(curr->ri, mid+1, r, ql, qr);
return kk;
}
int main(){
int q, c, x, y, z;
node *root=nullptr;
scanf("%d",&q);
c=0;
while(q--){
scanf("%d",&x);
scanf("%d",&y);
scanf("%d",&z);
y+=c;
z+=c;
if(x==1){
c=query(root, 1, 1000000000, y, z);
printf("%d\n", c);
}
else{
update(root, 1, 1000000000, y, z);
}
}
return 0;
}
Compilation message (stderr)
apple.cpp: In function 'int main()':
apple.cpp:68:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
68 | scanf("%d",&q);
| ~~~~~^~~~~~~~~
apple.cpp:72:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
72 | scanf("%d",&x);
| ~~~~~^~~~~~~~~
apple.cpp:73:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
73 | scanf("%d",&y);
| ~~~~~^~~~~~~~~
apple.cpp:74:22: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
74 | scanf("%d",&z);
| ~~~~~^~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |