fork download
  1. #pragma GCC optimize("Ofast")
  2. #pragma GCC optimize("unroll-loops")
  3. #pragma GCC optimize("inline")
  4. #include<bits/stdc++.h>
  5. using namespace std;
  6. void*wmem;
  7. char memarr[96000000];
  8. template<class T> inline void walloc1d(T **arr, int x, void **mem = &wmem){
  9. static int skip[16] = {0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
  10. (*mem) = (void*)( ((char*)(*mem)) + skip[((unsigned long long)(*mem)) & 15] );
  11. (*arr)=(T*)(*mem);
  12. (*mem)=((*arr)+x);
  13. }
  14. template<class T> inline void walloc1d(T **arr, int x1, int x2, void **mem = &wmem){
  15. walloc1d(arr, x2-x1, mem);
  16. (*arr) -= x1;
  17. }
  18. template<class T> struct fenwick{
  19. int size;
  20. int memory;
  21. T*data;
  22. void malloc(int mem);
  23. void malloc(int mem, int fg);
  24. void walloc(int mem, void **workMemory = &wmem);
  25. void walloc(int mem, int fg, void **workMemory = &wmem);
  26. void free(void);
  27. void init(int N);
  28. void add(int k, T val);
  29. T get(int k);
  30. T range(int a, int b);
  31. int kth(T k);
  32. }
  33. ;
  34. #define main dummy_main
  35. int main(){
  36. wmem = memarr;
  37. return 0;
  38. }
  39. #undef main
  40. fenwick<int> t;
  41. class Solution{
  42. public:
  43. bool canReach(string s, int A, int B){
  44. int i;
  45. dummy_main();
  46. int N = s.size();
  47. t.walloc(N,1);
  48. t.add(0,1);
  49. for(i=(1);i<(N);i++){
  50. if(s[i]=='0'){
  51. if(t.range(i-B, i-A)){
  52. t.add(i,1);
  53. }
  54. }
  55. }
  56. return t.range(N-1,N-1);
  57. }
  58. }
  59. ;
  60. template<class T> void fenwick<T>::malloc(int mem){
  61. memory = mem;
  62. data = (T*)std::malloc(sizeof(T)*mem);
  63. }
  64. template<class T> void fenwick<T>::malloc(int mem, int fg){
  65. memory = mem;
  66. data = (T*)std::malloc(sizeof(T)*mem);
  67. if(fg){
  68. init(mem);
  69. }
  70. }
  71. template<class T> void fenwick<T>::walloc(int mem, void **workMemory /* = &wmem*/){
  72. memory = mem;
  73. walloc1d(&data, mem, workMemory);
  74. }
  75. template<class T> void fenwick<T>::walloc(int mem, int fg, void **workMemory /* = &wmem*/){
  76. memory = mem;
  77. walloc1d(&data, mem, workMemory);
  78. if(fg){
  79. init(mem);
  80. }
  81. }
  82. template<class T> void fenwick<T>::free(void){
  83. memory = 0;
  84. free(data);
  85. }
  86. template<class T> void fenwick<T>::init(int N){
  87. size = N;
  88. memset(data,0,sizeof(T)*N);
  89. }
  90. template<class T> void fenwick<T>::add(int k, T val){
  91. while(k < size){
  92. data[k] += val;
  93. k |= k+1;
  94. }
  95. }
  96. template<class T> T fenwick<T>::get(int k){
  97. T res = 0;
  98. while(k>=0){
  99. res += data[k];
  100. k = (k&(k+1))-1;
  101. }
  102. return res;
  103. }
  104. template<class T> T fenwick<T>::range(int a, int b){
  105. if(a < 0){
  106. a = 0;
  107. }
  108. if(b >= size){
  109. b = size - 1;
  110. }
  111. if(b < a){
  112. return 0;
  113. }
  114. return get(b) - get(a-1);
  115. }
  116. template<class T> int fenwick<T>::kth(T k){
  117. int i=0;
  118. int j=size;
  119. int c;
  120. T v;
  121. while(i<j){
  122. c = (i+j)/2;
  123. v = get(c);
  124. if(v <= k){
  125. i=c+1;
  126. }
  127. else{
  128. j=c;
  129. }
  130. }
  131. return i==size?-1:i;
  132. }
  133. // cLay version 20210524-1
  134.  
  135. // --- original code ---
  136. // #define main dummy_main
  137. // {}
  138. // #undef main
  139. //
  140. // fenwick<int> t;
  141. //
  142. // class Solution {
  143. // public:
  144. // bool canReach(string s, int A, int B) {
  145. // dummy_main();
  146. // int N = s.size();
  147. // t.walloc(N,1);
  148. // t.add(0,1);
  149. // rep(i,1,N) if(s[i]=='0') if(t.range(i-B, i-A)) t.add(i,1);
  150. // return t.range(N-1,N-1);
  151. // }
  152. // };
  153.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty