记录编号 527085 评测结果 AAAAAAAAAAAA
题目名称 售票系统 最终得分 100
用户昵称 GravatarHzoi_chairman 是否通过 通过
代码语言 C++ 运行时间 0.165 s
提交时间 2019-02-10 10:56:15 内存使用 4.98 MiB
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. #define ll long long
  5. #define lson rt<<1,l,mid
  6. #define rson rt<<1|1,mid+1,r
  7. #define maxn 60010*4
  8. int s,t,n,a[maxn],la[maxn];
  9. void update(int rt)
  10. {
  11. a[rt<<1]+=la[rt];
  12. a[rt<<1|1]+=la[rt];
  13. la[rt<<1]+=la[rt];
  14. la[rt<<1|1]+=la[rt];
  15. la[rt]=0;
  16. }
  17. int find(int rt,int l,int r)
  18. {
  19. if(s<=l&&t>=r)return a[rt];
  20. int mid=l+r>>1;
  21. if(la[rt])update(rt);
  22. if(s>mid)return find(rson);
  23. if(t<=mid)return find(lson);
  24. return max(find(lson),find(rson));
  25. }
  26. void insert(int rt,int l,int r)
  27. {
  28. if(s<=l&&t>=r)
  29. {
  30. a[rt]+=n;
  31. la[rt]+=n;
  32. return ;
  33. }
  34. int mid=l+r>>1;
  35. if(la[rt])update(rt);
  36. if(s<=mid)insert(lson);
  37. if(t>mid)insert(rson);
  38. a[rt]=max(a[rt<<1],a[rt<<1|1]);
  39. }
  40. int main()
  41. {
  42. freopen("railway.in","r",stdin);
  43. freopen("railway.out","w",stdout);
  44. int c,S,r;
  45. scanf("%d%d%d",&c,&S,&r);
  46. c-=1;
  47. for(int i=1;i<=r;i++)
  48. {
  49. scanf("%d%d%d",&s,&t,&n);
  50. t--;
  51. int k=find(1,1,c);
  52. if(k+n>S)puts("NO");
  53. else puts("YES"),insert(1,1,c);
  54. }
  55. }