fork download
  1. //https://w...content-available-to-author-only...f.com/problems/FLIPCOIN
  2.  
  3. #include <bits/stdc++.h>
  4. #define FOR(i,a,n) for(lli i=a;i<n;i++)
  5. #define sc(a) scanf("%lld",&a)
  6. #define sc_(a,b) scanf("%lld%lld",&a,&b)
  7. #define pf(x) printf("%lld\n",x)
  8. #define lli long long int
  9. using namespace std;
  10. lli arr[1000004];
  11. lli seg[1000004];
  12. lli lazy[1000004];
  13. lli create(lli s,lli e,lli i)
  14. {
  15. if(s>e)
  16. return 0;
  17. if(s==e)
  18. {
  19. seg[i]=arr[s];
  20. return 0;
  21. }
  22. lli mid=(s+e)/2;
  23. create(s,mid,2*i+1);create(mid+1,e,2*i+2);
  24. seg[i]=seg[2*i+1]+seg[2*i+2];
  25. }
  26. lli query(lli s,lli e,lli qs,lli qe,lli si)
  27. {
  28. if(lazy[si]!=0)
  29. {
  30. seg[si]=(e-s+1)-seg[si];
  31. if(s!=e)
  32. {
  33. lazy[2*si+1]=lazy[si];
  34. lazy[2*si+2]=lazy[si];
  35. }
  36. lazy[si]=0;
  37. }
  38. if(s>qe || qs>e || s>e)
  39. return 0;
  40. if(s>=qs && e<=qe)
  41. return seg[si];
  42. lli mid=(s+e)/2;
  43. return query(s,mid,qs,qe,2*si+1)+query(mid+1,e,qs,qe,2*si+2);
  44. }
  45. lli update(lli s,lli e,lli qs ,lli qe,lli si)
  46. {
  47. if(lazy[si]!=0)
  48. {
  49. seg[si]=(e-s+1)-seg[si];
  50. if(s!=e)
  51. {
  52. lazy[2*si+1]=lazy[si];
  53. lazy[2*si+2]=lazy[si];
  54. }
  55. lazy[si]=0;
  56. }
  57. if(s>e || s>qe || qs>e)
  58. return 0;
  59. if(s>=qs && e<=qe)
  60. {
  61. seg[si]=(e-s+1)-seg[si];
  62. if(s!=e)
  63. {
  64. lazy[si*2+1]=1;
  65. lazy[si*2+2]=1;
  66. }
  67. return 0;
  68. }
  69. lli mid=(e+s)/2;
  70. update(s,mid,qs,qe,2*si+1);
  71. update(mid+1,e,qs,qe,2*si+2);
  72. seg[si]=seg[2*si+1]+seg[2*si+2];
  73. }
  74.  
  75.  
  76.  
  77. int main()
  78. {
  79. lli n,q;
  80. sc_(n,q);
  81. FOR(i,0,n)
  82. {
  83. arr[i]=1;
  84. lazy[i]=0;
  85. }
  86. FOR(i,0,10*n)
  87. {
  88. lazy[i]=0;
  89.  
  90. }
  91. create(0,n-1,0);
  92. FOR(i,0,q)
  93. {
  94. lli flag,a,b;
  95. sc(flag);sc_(a,b);
  96. if(flag==0)
  97. {
  98. update(0,n-1,a,b,0);
  99. }
  100. else if(flag==1)
  101. {
  102. lli x=query(0,n-1,a,b,0);
  103. printf("%lld\n",b-a-x+1 );
  104. }
  105. }
  106. return 0;
  107. }
  108.  
  109.  
  110.  
Runtime error #stdin #stdout 0.01s 26896KB
stdin
Standard input is empty
stdout
Standard output is empty