记录编号 343429 评测结果 AAAAAAAAAA
题目名称 Color the Axis 最终得分 100
用户昵称 GravatarRapiz 是否通过 通过
代码语言 C++ 运行时间 4.776 s
提交时间 2016-11-09 10:35:15 内存使用 6.39 MiB
显示代码纯文本
  1. #include<cstdio>
  2. #define mid (l + r >> 1)
  3. #define lch (o << 1)
  4. #define rch (o << 1 | 1)
  5. #define file(x) "axis."#x
  6. const int N = 2e5+10;
  7. int n,m,s[N << 2],w[N << 2];
  8. int build(int o,int l,int r) {
  9. if(l > r) return 0;
  10. else if(l == r) return s[o] = 1;
  11. else return s[o] = build(lch,l,mid) + build(rch,mid + 1,r);
  12. }
  13. inline void mkw(int o,int l,int r){
  14. s[o] = 0;
  15. w[o] = 1;
  16. }
  17. void down(int o,int l,int r) {
  18. if (!w[o]) return;
  19. mkw(lch,l,mid),mkw(rch,mid + 1,r);
  20. w[o] = 0;
  21. }
  22. inline void up(int o) {
  23. s[o] = s[lch] + s[rch];
  24. }
  25. int q1,q2;
  26. void modi(int o,int l,int r){
  27. if(q1 <= l && r <= q2) {
  28. mkw(o,l,r);
  29. return;
  30. }
  31. down(o,l,r);
  32. if(q1 <= mid) modi(lch,l,mid);
  33. if(q2 > mid) modi(rch,mid + 1,r);
  34. up(o);
  35. }
  36. inline int query(){
  37. down(1,1,n);
  38. return s[1];
  39. }
  40. int main(){
  41. freopen(file(in),"r",stdin);
  42. freopen(file(out),"w",stdout);
  43. scanf("%d%d",&n,&m);
  44. build(1,1,n);
  45. while (m--) {
  46. scanf("%d%d",&q1,&q2);
  47. modi(1,1,n);
  48. printf("%d\n",query());
  49. }
  50. return 0;
  51. }