fork(1) download
  1. //https://w...content-available-to-author-only...f.com/problems/MULTQ3/
  2.  
  3. #include <bits/stdc++.h>
  4. #define lli long long int
  5. #define gc() getchar_unlocked();
  6. #define sc(a) scanf("%lld",&a);gc();
  7. #define sc_(a,b) scanf("%lld%lld",&a,&b);gc();
  8. #define pf(a) printf("%lld\n",a);
  9. #define FOR(i,a,b) for(lli i=a;i<b;i++)
  10. using namespace std;
  11. struct node
  12. {
  13. lli rem[3];
  14. };
  15. lli arr[1000006];
  16. struct node seg[8000006];
  17. lli lazy[1000006];
  18. lli init(lli n)
  19. {
  20. FOR(i,0,n)
  21. arr[i]=0;
  22. FOR(i,0,5*n)
  23. {
  24. seg[i].rem[0]=0;
  25. seg[i].rem[1]=0;
  26. seg[i].rem[2]=0;
  27. }
  28. }
  29. struct node add(struct node seg1,struct node seg2)
  30. {
  31. struct node t;
  32. t.rem[0]=seg1.rem[0]+seg2.rem[0];
  33. t.rem[1]=seg1.rem[1]+seg2.rem[1];
  34. t.rem[2]=seg1.rem[2]+seg2.rem[2];
  35. return t;
  36. }
  37. lli create(lli s,lli e,lli ind)
  38. {
  39. if(s>e)
  40. return 0;
  41. if(s==e)
  42. {
  43. seg[ind].rem[arr[s]%3]++;
  44. return 0;
  45. }
  46. lli mid=(s+e)/2;
  47. create(s,mid,2*ind+1);
  48. create(mid+1,e,2*ind+2);
  49. seg[ind]=add(seg[2*ind+1],seg[2*ind+2]);
  50. }
  51. struct node shift1(struct node a)
  52. {
  53. FOR(i,0,3)
  54. {
  55. swap(a.rem[i],a.rem[2]);
  56. }
  57. return a;
  58. }
  59. lli query(lli s,lli e,lli qs,lli qe,lli ind)
  60. {
  61. if(lazy[ind]!=0)
  62. {
  63. lli z=lazy[ind]%3;
  64. FOR(i,0,z)
  65. {
  66. seg[ind]=shift1(seg[ind]);
  67. }
  68. if(s!=e)
  69. {
  70. lazy[2*ind+1]+=lazy[ind];
  71. lazy[2*ind+2]+=lazy[ind];
  72. }
  73. lazy[ind]=0;
  74. }
  75. if(s>qe || e<qs || s>e)
  76. return 0;
  77. if(s>=qs && e<=qe)
  78. return seg[ind].rem[0];
  79. lli mid=(s+e)/2;
  80. lli q1=query(s,mid,qs,qe,2*ind+1);
  81. lli q2=query(mid+1,e,qs,qe,2*ind+2);
  82. return q1+q2;
  83. }
  84. lli update(lli s,lli e,lli qs,lli qe,lli ind)
  85. {
  86. if(lazy[ind]!=0)
  87. {
  88. lli z=lazy[ind]%3;
  89. FOR(i,0,z)
  90. {
  91. seg[ind]=shift1(seg[ind]);
  92. }
  93. if(s!=e)
  94. {
  95. lazy[2*ind+1]+=lazy[ind];
  96. lazy[2*ind+2]+=lazy[ind];
  97. }
  98. lazy[ind]=0;
  99. }
  100. if(s>qe || e<qs || s>e)
  101. {
  102. return 0;
  103. }
  104. if(s>=qs && qe>=e)
  105. {
  106. lli z=1;
  107. FOR(i,0,z)
  108. {
  109. seg[ind]=shift1(seg[ind]);
  110. }
  111. if(s!=e)
  112. {
  113. lazy[2*ind+1]+=1;
  114. lazy[2*ind+2]+=1;
  115. }
  116. return 0;
  117. }
  118. lli mid=(s+e)/2;
  119. {
  120. update(s,mid,qs,qe,2*ind+1);
  121. update(mid+1,e,qs,qe,2*ind+2);
  122. }
  123. seg[ind]=add(seg[2*ind+1],seg[2*ind+2]);
  124. }
  125. int main()
  126. {
  127. lli n,q;
  128. sc_(n,q);
  129. init(n);
  130. create(0,n-1,0);
  131. while(q--)
  132. {
  133. lli flag;
  134. sc(flag);
  135. lli s,e;
  136. sc_(s,e);
  137. if(flag==0)
  138. {
  139. update(0,n-1,s,e,0);
  140. }
  141. if(flag==1)
  142. {
  143. lli ans=query(0,n-1,s,e,0);
  144. printf("%lld\n",ans);
  145. }
  146. }
  147. return 0;
  148. }//https://w...content-available-to-author-only...f.com/problems/MULTQ3/
  149.  
  150. #include <bits/stdc++.h>
  151. #define lli long long int
  152. #define gc() getchar_unlocked();
  153. #define sc(a) scanf("%lld",&a);gc();
  154. #define sc_(a,b) scanf("%lld%lld",&a,&b);gc();
  155. #define pf(a) printf("%lld\n",a);
  156. #define FOR(i,a,b) for(lli i=a;i<b;i++)
  157. using namespace std;
  158. struct node
  159. {
  160. lli rem[3];
  161. };
  162. lli arr[1000006];
  163. struct node seg[8000006];
  164. lli lazy[1000006];
  165. lli init(lli n)
  166. {
  167. FOR(i,0,n)
  168. arr[i]=0;
  169. FOR(i,0,5*n)
  170. {
  171. seg[i].rem[0]=0;
  172. seg[i].rem[1]=0;
  173. seg[i].rem[2]=0;
  174. }
  175. }
  176. struct node add(struct node seg1,struct node seg2)
  177. {
  178. struct node t;
  179. t.rem[0]=seg1.rem[0]+seg2.rem[0];
  180. t.rem[1]=seg1.rem[1]+seg2.rem[1];
  181. t.rem[2]=seg1.rem[2]+seg2.rem[2];
  182. return t;
  183. }
  184. lli create(lli s,lli e,lli ind)
  185. {
  186. if(s>e)
  187. return 0;
  188. if(s==e)
  189. {
  190. seg[ind].rem[arr[s]%3]++;
  191. return 0;
  192. }
  193. lli mid=(s+e)/2;
  194. create(s,mid,2*ind+1);
  195. create(mid+1,e,2*ind+2);
  196. seg[ind]=add(seg[2*ind+1],seg[2*ind+2]);
  197. }
  198. struct node shift1(struct node a)
  199. {
  200. FOR(i,0,3)
  201. {
  202. swap(a.rem[i],a.rem[2]);
  203. }
  204. return a;
  205. }
  206. lli query(lli s,lli e,lli qs,lli qe,lli ind)
  207. {
  208. if(lazy[ind]!=0)
  209. {
  210. lli z=lazy[ind]%3;
  211. FOR(i,0,z)
  212. {
  213. seg[ind]=shift1(seg[ind]);
  214. }
  215. if(s!=e)
  216. {
  217. lazy[2*ind+1]+=lazy[ind];
  218. lazy[2*ind+2]+=lazy[ind];
  219. }
  220. lazy[ind]=0;
  221. }
  222. if(s>qe || e<qs || s>e)
  223. return 0;
  224. if(s>=qs && e<=qe)
  225. return seg[ind].rem[0];
  226. lli mid=(s+e)/2;
  227. lli q1=query(s,mid,qs,qe,2*ind+1);
  228. lli q2=query(mid+1,e,qs,qe,2*ind+2);
  229. return q1+q2;
  230. }
  231. lli update(lli s,lli e,lli qs,lli qe,lli ind)
  232. {
  233. if(lazy[ind]!=0)
  234. {
  235. lli z=lazy[ind]%3;
  236. FOR(i,0,z)
  237. {
  238. seg[ind]=shift1(seg[ind]);
  239. }
  240. if(s!=e)
  241. {
  242. lazy[2*ind+1]+=lazy[ind];
  243. lazy[2*ind+2]+=lazy[ind];
  244. }
  245. lazy[ind]=0;
  246. }
  247. if(s>qe || e<qs || s>e)
  248. {
  249. return 0;
  250. }
  251. if(s>=qs && qe>=e)
  252. {
  253. lli z=1;
  254. FOR(i,0,z)
  255. {
  256. seg[ind]=shift1(seg[ind]);
  257. }
  258. if(s!=e)
  259. {
  260. lazy[2*ind+1]+=1;
  261. lazy[2*ind+2]+=1;
  262. }
  263. return 0;
  264. }
  265. lli mid=(s+e)/2;
  266. {
  267. update(s,mid,qs,qe,2*ind+1);
  268. update(mid+1,e,qs,qe,2*ind+2);
  269. }
  270. seg[ind]=add(seg[2*ind+1],seg[2*ind+2]);
  271. }
  272. int main()
  273. {
  274. lli n,q;
  275. sc_(n,q);
  276. init(n);
  277. create(0,n-1,0);
  278. while(q--)
  279. {
  280. lli flag;
  281. sc(flag);
  282. lli s,e;
  283. sc_(s,e);
  284. if(flag==0)
  285. {
  286. update(0,n-1,s,e,0);
  287. }
  288. if(flag==1)
  289. {
  290. lli ans=query(0,n-1,s,e,0);
  291. printf("%lld\n",ans);
  292. }
  293. }
  294. return 0;
  295. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:158:8: error: redefinition of 'struct node'
 struct node
        ^
prog.cpp:11:8: error: previous definition of 'struct node'
 struct node
        ^
prog.cpp:162:16: error: redefinition of 'long long int arr [1000006]'
 lli arr[1000006];
                ^
prog.cpp:15:5: note: 'long long int arr [1000006]' previously declared here
 lli arr[1000006];
     ^
prog.cpp:163:24: error: redefinition of 'node seg [8000006]'
 struct node seg[8000006];
                        ^
prog.cpp:16:13: note: 'node seg [8000006]' previously declared here
 struct node seg[8000006];
             ^
prog.cpp:164:17: error: redefinition of 'long long int lazy [1000006]'
 lli lazy[1000006];
                 ^
prog.cpp:17:5: note: 'long long int lazy [1000006]' previously declared here
 lli lazy[1000006];
     ^
prog.cpp: In function 'long long int init(long long int)':
prog.cpp:165:5: error: redefinition of 'long long int init(long long int)'
 lli init(lli n)
     ^
prog.cpp:18:5: note: 'long long int init(long long int)' previously defined here
 lli init(lli n)
     ^
prog.cpp: In function 'node add(node, node)':
prog.cpp:176:13: error: redefinition of 'node add(node, node)'
 struct node add(struct node seg1,struct node seg2)
             ^
prog.cpp:29:13: note: 'node add(node, node)' previously defined here
 struct node add(struct node seg1,struct node seg2)
             ^
prog.cpp: In function 'long long int create(long long int, long long int, long long int)':
prog.cpp:184:5: error: redefinition of 'long long int create(long long int, long long int, long long int)'
 lli create(lli s,lli e,lli ind)
     ^
prog.cpp:37:5: note: 'long long int create(long long int, long long int, long long int)' previously defined here
 lli create(lli s,lli e,lli ind)
     ^
prog.cpp: In function 'node shift1(node)':
prog.cpp:198:13: error: redefinition of 'node shift1(node)'
 struct node shift1(struct node a)
             ^
prog.cpp:51:13: note: 'node shift1(node)' previously defined here
 struct node shift1(struct node a)
             ^
prog.cpp: In function 'long long int query(long long int, long long int, long long int, long long int, long long int)':
prog.cpp:206:5: error: redefinition of 'long long int query(long long int, long long int, long long int, long long int, long long int)'
 lli query(lli s,lli e,lli qs,lli qe,lli ind)
     ^
prog.cpp:59:5: note: 'long long int query(long long int, long long int, long long int, long long int, long long int)' previously defined here
 lli query(lli s,lli e,lli qs,lli qe,lli ind)
     ^
prog.cpp: In function 'long long int update(long long int, long long int, long long int, long long int, long long int)':
prog.cpp:231:5: error: redefinition of 'long long int update(long long int, long long int, long long int, long long int, long long int)'
 lli update(lli s,lli e,lli qs,lli qe,lli ind)
     ^
prog.cpp:84:5: note: 'long long int update(long long int, long long int, long long int, long long int, long long int)' previously defined here
 lli update(lli s,lli e,lli qs,lli qe,lli ind)
     ^
prog.cpp: In function 'int main()':
prog.cpp:272:5: error: redefinition of 'int main()'
 int main()
     ^
prog.cpp:125:5: note: 'int main()' previously defined here
 int main()
     ^
stdout
Standard output is empty