记录编号 304957 评测结果 AAAAAAAAAAAA
题目名称 售票系统 最终得分 100
用户昵称 Gravatarcy 是否通过 通过
代码语言 C++ 运行时间 0.323 s
提交时间 2016-09-10 10:20:28 内存使用 3.34 MiB
显示代码纯文本
#include<stdio.h>
#include<time.h>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
inline void read(int&x)
{
	int flag=1;
	char ch;
	while(ch=getchar(),ch<'0'||ch>'9') if(ch=='-') flag=-1;
	x=(ch^'0');
	while(ch=getchar(),ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^'0');
	x*=flag;
}
inline int max(int x,int y){return x>y?x:y;}
//===============================================================

int sum[400010]={0},mk[400010]={0};
inline void push_up(int rt)
{sum[rt]=max(sum[rt<<1],sum[rt<<1|1]);}
void push_down(int rt,int x)
{
	mk[rt<<1]+=mk[rt];
	mk[rt<<1|1]+=mk[rt];
	sum[rt<<1]+=mk[rt];
	sum[rt<<1|1]+=mk[rt];
	mk[rt]=0;
}
inline void f(int L,int R,int x,int l,int r,int rt)
{
	if(L<=l&&R>=r){
		mk[rt]+=x;
		sum[rt]+=x;
		return;
	}
	push_down(rt,(r-l+1));
	int m = (l + r) >> 1;
    if(L<=m) f(L,R,x,lson);
    if(R>m) f(L,R,x,rson);
    sum[rt]=max(sum[rt<<1],sum[rt<<1|1]);
}
inline int q(int L,int R,int l,int r,int rt)
{
	push_down(rt,(r-l+1));
	if(L<=l&&r<=R) return sum[rt];
	
	int m=l+r>>1,res=0;
	if(m>=L) res=max(res,q(L,R,lson));
	if(m<R) res=max(res,q(L,R,rson));
	return res;
}
int main()
{
	freopen("railway.in","r",stdin);
	freopen("railway.out","w",stdout);
	int n,k,m;
	read(n);read(k);read(m);
	while(m--)
	{
		int a,b,c;
		read(a);read(b);read(c);
		if(q(a,b-1,1,n,1)>k-c)
		{printf("NO\n");}
		else 
		{printf("YES\n");f(a,b-1,c,1,n,1);}
	}
	//printf("%.3lf\n",(double)clock()/CLOCKS_PER_SEC);
}