比赛 |
[不是Rapiz出的]农场主钦定NOIP模拟赛1 |
评测结果 |
WWWWWWWWWW |
题目名称 |
Color the Axis |
最终得分 |
0 |
用户昵称 |
Hzoi_chairman |
运行时间 |
3.845 s |
代码语言 |
C++ |
内存使用 |
6.39 MiB |
提交时间 |
2016-11-08 19:33:46 |
显示代码纯文本
#include<cstdlib>
#include<cstdio>
int read()
{
int x,f=1;
char ch;
while(ch=getchar(),ch>'9'||ch<'0')if(ch=='-')f=-1;
x=ch-48;
while(ch=getchar(),ch>='0'&&ch<='9')x=x*10+ch-48;
return x*f;
}
#define mid ((l+r)>>1)
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,r
#define lch rt<<1
#define rch rt<<1|1
#define maxn 800100
int a[maxn],lazy[maxn],x,y;
void build(int rt,int l,int r)
{
if(l==r)
{
a[rt]=1;
return ;
}
build(lson);
build(rson);
a[rt]=a[lch]+a[rch];
}
void change(int rt,int l,int r)
{
if(x<=l&&y>=r)
{
a[rt]=0;lazy[rt]=1;
return ;
}
if(lazy[rt])a[lch]=a[rch]=0;
if(x<=mid)change(lson);
if(y>mid)change(rson);
a[rt]=a[lch]+a[rch];
}
int main()
{
freopen("axis.in","r",stdin);
freopen("axis.out","w",stdout);
int n=read(),m=read();
build(1,1,n);
for(int i=1;i<=m;i++)
{
x=read(),y=read();
change(1,1,n);
printf("%d\n",a[1]);
}
// system("pause");
fclose(stdin);
fclose(stdout);
}