记录编号 409818 评测结果 AAAAAAAAAAAAAA
题目名称 线段覆盖 最终得分 100
用户昵称 GravatarFisher. 是否通过 通过
代码语言 C++ 运行时间 0.977 s
提交时间 2017-05-29 14:54:24 内存使用 7.92 MiB
显示代码纯文本
#include <cstdio>
#include <algorithm>
using namespace std;
int n,t;
struct d
{
	int len,s;
	int zr,yr;
	int c;
};
d node[400000];
inline void gengxin(int o,int l,int r)
{
	if(node[o].c>0)
	{
		node[o].zr=node[o].yr=node[o].s=1;
		node[o].len=r-l+1;
		return;
	}
	else
	{
		node[o].zr=node[o*2].zr;
		node[o].yr=node[o*2+1].yr;
		node[o].len=node[o*2].len+node[o*2+1].len;
		node[o].s=node[o*2].s+node[o*2+1].s;
		if(node[o*2].yr==1&&node[o*2+1].zr==1)node[o].s--;
		return ;
	}
}
inline void add(int o,int l,int r,int nl,int nr,int v)
{
	if(l>=nl&&r<=nr)
	{
		node[o].c+=v;
		if(l==r)
		{
			if(node[o].c>0)
			{
				node[o].len=node[o].zr=node[o].yr=node[o].s=1;
				return;
			}
			else
			{
				node[o].len=node[o].zr=node[o].yr=node[o].s=0;
				return;
			}
		}
		else
		{
			gengxin(o,l,r);
			return;
		}
	}
	int m=(l+r)>>1;
	if(m>=nl)
	{
		add(o*2,l,m,nl,nr,v);
	}
	if(m<nr)
	{
		add(o*2+1,m+1,r,nl,nr,v);
	}
	gengxin(o,l,r);
}
int main()
{
	freopen("xdfg.in","r",stdin);
	freopen("xdfg.out","w",stdout);
	scanf("%d%d",&n,&t);
	while(t--)
	{
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		if(x==1)
		{
			add(1,1,n,y,y+z-1,1);
		}
		else
		{
			add(1,1,n,y,y+z-1,-1);
		}
		printf("%d %d\n",node[1].s,node[1].len);
	}
	return 0;
}