记录编号 445257 评测结果 AAAAAAAAAAAA
题目名称 售票系统 最终得分 100
用户昵称 Gravatarliuyu 是否通过 通过
代码语言 C++ 运行时间 0.748 s
提交时间 2017-09-05 17:19:08 内存使用 2.37 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
 
int n,s,q,x,y,z,a[60000+10],ans,u;
int minv[240000+10],addv[240000+10];
 
void build(int o,int l,int r){
	if(l==r)minv[o]=s;
	else{
		int lc=2*o;
		int rc=lc+1,m=l+(r-l)/2;
		build(lc,l,m);
		build(rc,m+1,r);
		minv[o]=s;
	}
}
void addma(int o,int l,int r,int _add){
	if(l>=x&&r<=y){
		ans=min(ans,minv[o]+_add);
	}
	else{
		int lc=2*o;
		int rc=lc+1,m=l+(r-l)/2;
		if(x<=m)addma(lc,l,m,_add+addv[o]);
		if(y>m)addma(rc,m+1,r,_add+addv[o]);
	}
}
void add(int o,int l,int r)
{
	if(l>=x&&r<=y){
		addv[o]-=z;minv[o]-=z;
	}
	else{
		int lc=2*o;
		int rc=lc+1,m=l+(r-l)/2;
		if(x<=m)add(lc,l,m);
		if(y>m)add(rc,m+1,r);
		minv[o]=min(minv[lc],minv[rc]);
		minv[o]+=addv[o];
	}
}
void init(){
	scanf("%d%d%d",&n,&s,&q);
	for(int i=1;i<=n;i++)a[i]=s;
	build(1,1,n);
}
 
int main(){
	freopen("railway.in","r",stdin);
    freopen("railway.out","w",stdout);
	init();
	while(q--){
		scanf("%d%d%d",&x,&y,&z);
		y-=1;
		ans=1e9;
		addma(1,1,n,0);
		if(ans-z<0)cout<<"NO"<<endl;
		else cout<<"YES"<<endl,add(1,1,n);
		
	}
	return 0;
}