fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. inline int my_getchar_unlocked(){
  5. static char buf[1048576];
  6. static int s = 1048576;
  7. static int e = 1048576;
  8. if(s == e && e == 1048576){
  9. e = fread_unlocked(buf, 1, 1048576, stdin);
  10. s = 0;
  11. }
  12. if(s == e){
  13. return EOF;
  14. }
  15. return buf[s++];
  16. }
  17. inline void rd(int &x){
  18. int k;
  19. int m=0;
  20. x=0;
  21. for(;;){
  22. k = my_getchar_unlocked();
  23. if(k=='-'){
  24. m=1;
  25. break;
  26. }
  27. if('0'<=k&&k<='9'){
  28. x=k-'0';
  29. break;
  30. }
  31. }
  32. for(;;){
  33. k = my_getchar_unlocked();
  34. if(k<'0'||k>'9'){
  35. break;
  36. }
  37. x=x*10+k-'0';
  38. }
  39. if(m){
  40. x=-x;
  41. }
  42. }
  43. inline void rd(long long &x){
  44. int k;
  45. int m=0;
  46. x=0;
  47. for(;;){
  48. k = my_getchar_unlocked();
  49. if(k=='-'){
  50. m=1;
  51. break;
  52. }
  53. if('0'<=k&&k<='9'){
  54. x=k-'0';
  55. break;
  56. }
  57. }
  58. for(;;){
  59. k = my_getchar_unlocked();
  60. if(k<'0'||k>'9'){
  61. break;
  62. }
  63. x=x*10+k-'0';
  64. }
  65. if(m){
  66. x=-x;
  67. }
  68. }
  69. inline int rd_int(void){
  70. int x;
  71. rd(x);
  72. return x;
  73. }
  74. struct MY_WRITER{
  75. char buf[1048576];
  76. int s;
  77. int e;
  78. MY_WRITER(){
  79. s = 0;
  80. e = 1048576;
  81. }
  82. ~MY_WRITER(){
  83. if(s){
  84. fwrite_unlocked(buf, 1, s, stdout);
  85. }
  86. }
  87. }
  88. ;
  89. MY_WRITER MY_WRITER_VAR;
  90. void my_putchar_unlocked(int a){
  91. if(MY_WRITER_VAR.s == MY_WRITER_VAR.e){
  92. fwrite_unlocked(MY_WRITER_VAR.buf, 1, MY_WRITER_VAR.s, stdout);
  93. MY_WRITER_VAR.s = 0;
  94. }
  95. MY_WRITER_VAR.buf[MY_WRITER_VAR.s++] = a;
  96. }
  97. inline void wt_L(char a){
  98. my_putchar_unlocked(a);
  99. }
  100. inline void wt_L(long long x){
  101. int s=0;
  102. int m=0;
  103. char f[20];
  104. if(x<0){
  105. m=1;
  106. x=-x;
  107. }
  108. while(x){
  109. f[s++]=x%10;
  110. x/=10;
  111. }
  112. if(!s){
  113. f[s++]=0;
  114. }
  115. if(m){
  116. my_putchar_unlocked('-');
  117. }
  118. while(s--){
  119. my_putchar_unlocked(f[s]+'0');
  120. }
  121. }
  122. template<class S, class T> inline S chmax(S &a, T b){
  123. if(a<b){
  124. a=b;
  125. }
  126. return a;
  127. }
  128. int N;
  129. int T;
  130. int L;
  131. int R;
  132. long long A[100000];
  133. long long tmp[100000+1];
  134. long long X;
  135. int main(){
  136. int e98WHCEY;
  137. long long res;
  138. rd(N);
  139. {
  140. int Lj4PdHRW;
  141. for(Lj4PdHRW=(0);Lj4PdHRW<(N);Lj4PdHRW++){
  142. rd(A[Lj4PdHRW]);
  143. }
  144. }
  145. int cTE1_r3A = rd_int();
  146. for(e98WHCEY=(0);e98WHCEY<(cTE1_r3A);e98WHCEY++){
  147. rd(T);
  148. rd(L);L += (-1);
  149. rd(R);
  150. rd(X);
  151. if(T==0){
  152. tmp[L] ^= X;
  153. tmp[R] ^= X;
  154. }
  155. else{
  156. int i;
  157. for(i=(1);i<(N);i++){
  158. tmp[i] ^= tmp[i-1];
  159. }
  160. for(i=(0);i<(N);i++){
  161. A[i] ^= tmp[i];
  162. }
  163. for(i=(0);i<(N+1);i++){
  164. tmp[i] = 0;
  165. }
  166. res = 0;
  167. for(i=(L);i<(R);i++){
  168. chmax(res, A[i]);
  169. }
  170. wt_L(res);
  171. wt_L('\n');
  172. }
  173. }
  174. return 0;
  175. }
  176. // cLay version 20201123-1
  177.  
  178. // --- original code ---
  179. // int N, T, L, R;
  180. // ll A[1d5], tmp[1d5+1], X;
  181. // {
  182. // ll res;
  183. // rd(N,A(N));
  184. // REP(rd_int()){
  185. // rd(T,L--,R,X);
  186. // if(T==0){
  187. // tmp[L] ^= X;
  188. // tmp[R] ^= X;
  189. // } else {
  190. // rep(i,1,N) tmp[i] ^= tmp[i-1];
  191. // rep(i,N) A[i] ^= tmp[i];
  192. // rep(i,N+1) tmp[i] = 0;
  193. // res = 0;
  194. // rep(i,L,R) res >?= A[i];
  195. // wt(res);
  196. // }
  197. // }
  198. // }
  199.  
Time limit exceeded #stdin #stdout 5s 4296KB
stdin
Standard input is empty
stdout
Standard output is empty