比赛 [不是Rapiz出的]农场主钦定NOIP模拟赛1 评测结果 AAAAAAAAAA
题目名称 Color the Axis 最终得分 100
用户昵称 jmisnal 运行时间 1.217 s
代码语言 C++ 内存使用 9.47 MiB
提交时间 2016-11-08 21:18:40
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
int read()
{
	int x=0;char ch=getchar();
	while(ch<'0'||ch>'9')ch=getchar();
	while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
	return x;
}
int n,m;
int ans;
struct data{
	int l,r,v;
}tr[800005];
void build(int l,int r,int bh)
{
	tr[bh].l=l;tr[bh].r=r;
	tr[bh].v=r-l+1;
	if(l==r)
		return;
	int mid=(l+r)>>1;
	build(l,mid,bh*2);
	build(mid+1,r,bh*2+1);
}
void change(int l,int r,int bh)
{
//	cout<<l<<' '<<r<<' '<<bh<<' '<<tr[bh].l<<' '<<tr[bh].r<<endl;;
	if(tr[bh].l==l&&tr[bh].r==r)
	{
		ans+=tr[bh].v;
		tr[bh].v=0;
		return;
	}
	if(tr[bh].v==0)
		return;
	int mid=(tr[bh].l+tr[bh].r)>>1;
	if(r<=mid)
		change(l,r,bh*2);
	else if(l>mid)
		change(l,r,bh*2+1);
	else
	{
		change(l,mid,bh*2);
		change(mid+1,r,bh*2+1);
	}
	tr[bh].v=tr[bh*2].v+tr[bh*2+1].v;
}
int main()
{
//	freopen("abcd.in","r",stdin);
//	freopen("2.out","w",stdout);
	freopen("axis.in","r",stdin);
	freopen("axis.out","w",stdout);
	n=read();m=read();
	build(1,n,1);
	ans=n;
	int l,r,c;
	for(int i=1;i<=m;i++)
	{
		l=read();r=read();
		
		ans=0;
		change(l,r,1);
	//	cout<<l<<' '<<r<<' '<<ans<<endl;
		n-=ans;
		printf("%d\n",n);
	}
	return 0;
}