记录编号 |
437851 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Color the Axis |
最终得分 |
100 |
用户昵称 |
BaDBoY |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
1.226 s |
提交时间 |
2017-08-14 19:43:57 |
内存使用 |
4.50 MiB |
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define ls(rt) (rt<<1)
#define rs(rt) (rt<<1|1)
int read() {
int s=0,f=1;
char ch=getchar();
while(ch>'9'||ch<'0') {
if(ch=='-') {
f=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9') {
s=(s<<1)+(s<<3)+(ch^48);
ch=getchar();
}
return s*f;
}
int n,m;
int tree[4*200005],lazy[4*200005];
void pushup(int rt) {
tree[rt]=tree[ls(rt)]+tree[rs(rt)];
}
void pushdown(int rt) {
if(lazy[rt]) {
lazy[ls(rt)]=1;
lazy[rs(rt)]=1;
tree[ls(rt)]=0;
tree[rs(rt)]=0;
lazy[rt]=0;
}
}
void build(int i,int l,int r) {
if(l==r) {
tree[i]=1;
return ;
}
int mid=l+r>>1;
build(ls(i),l,mid);
build(rs(i),mid+1,r);
pushup(i);
}
void update(int i,int L,int R,int l,int r) {
if(l<=L&&R<=r) {
tree[i]=0;
lazy[i]=1;
return ;
}
pushdown(i);
int mid=L+R>>1;
if(l<=mid) {
update(ls(i),L,mid,l,r);
}
if(r>mid) {
update(rs(i),mid+1,R,l,r);
}
pushup(i);
}
int Main() {
freopen("axis.in","r",stdin);
freopen("axis.out","w",stdout);
n=read(),m=read();
build(1,1,n);
for(int i=1; i<=m; ++i) {
int x=read(),y=read();
update(1,1,n,x,y);
printf("%d\n",tree[1]);
}
return 0;
}
int hehe=Main();
int main(){
}