比赛 [不是Rapiz出的]农场主钦定NOIP模拟赛1 评测结果 AAAAAAAAAA
题目名称 Color the Axis 最终得分 100
用户昵称 _Itachi 运行时间 1.542 s
代码语言 C++ 内存使用 3.69 MiB
提交时间 2016-11-08 18:41:56
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=200005;
int n,m,f[maxn<<2],s,t;bool lz[maxn<<2];
void Rabit_down(int rt,int l,int r,int mid){
	if(lz[rt]){
		f[rt<<1]=mid-l+1,lz[rt<<1]=true;
		f[rt<<1|1]=r-mid,lz[rt<<1|1]=true;
	}
}
void Rabit_dig(int rt,int l,int r){
	if(f[rt]==r-l+1)return;
	if(s<=l&&r<=t){
		f[rt]=r-l+1;lz[rt]=true;
		return;	
	}	
	int mid=(l+r)>>1;
	Rabit_down(rt,l,r,mid);
	if(s<=mid)Rabit_dig(rt<<1,l,mid);
	if(t>mid)Rabit_dig(rt<<1|1,mid+1,r);
	f[rt]=f[rt<<1]+f[rt<<1|1];
}
void Rabit_main(){
	scanf("%d%d",&n,&m);
	while(m--)
		scanf("%d%d",&s,&t),Rabit_dig(1,1,n),printf("%d\n",n-f[1]);
}
int main(){
#define _Rabit _RABIT
#ifdef _Rabit
	freopen("axis.in","r",stdin);
	freopen("axis.out","w",stdout);
#endif
	Rabit_main();
#ifndef _Rabit
	getchar(),getchar();
#endif
	fclose(stdin);fclose(stdout);
	return 0;
}