比赛 |
[不是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;
}