qw,WA#1了。。
代码:
#include <stdio.h>
#define MAXN 16384
struct TREE_NODE{
int l,r;
int value;
} tree[MAXN << 2];
int n,m;
int a[MAXN];
inline void BUILD(int p,int l,int r){
tree[p].l = l;tree[p].r = r;
if(l == r){
tree[p].value = 1;
return ;
}
int mid = l+r >> 1;
BUILD(p << 1,l,mid);
BUILD(p << 1|1,mid+1,r);
tree[p].value = tree[p << 1].value+tree[p << 1|1].value;
}
inline void UPDATE(int p,int l,int r){
int &x = tree[p].l;int &y = tree[p].r;
if(x == y){
tree[p].value = 0;
return ;
}
int mid = x+y >> 1;
if(l <= mid) UPDATE(p << 1,l,r);
if(r > mid) UPDATE(p << 1|1,l,r);
tree[p].value = tree[p << 1].value+tree[p << 1|1].value;
}
inline int SEARCH(int p,int l,int r){
int &x = tree[p].l;int &y = tree[p].r;
if(x >= l && y <= r) return tree[p].value;
int mid = x+y >> 1;
int step = 0;
if(l <= mid) step += SEARCH(p << 1,l,r);
if(r > mid) step += SEARCH(p << 1|1,l,r);
return step;
}
signed main(){
scanf("%d%d",&n,&m);
BUILD(1,1,n);
while(m --){
int l,r;
scanf("%d%d",&l,&r);
UPDATE(1,l,r);
}printf("%d",SEARCH(1,1,n)+1);
return 0;
}
(=・ω・=)