fork download
  1. #pragma GCC optimize ("Ofast")
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4. void*wmem;
  5. char memarr[96000000];
  6. template<class T> inline void walloc1d(T **arr, int x, void **mem = &wmem){
  7. static int skip[16] = {0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
  8. (*mem) = (void*)( ((char*)(*mem)) + skip[((unsigned long long)(*mem)) & 15] );
  9. (*arr)=(T*)(*mem);
  10. (*mem)=((*arr)+x);
  11. }
  12. template<class T> inline void walloc1d(T **arr, int x1, int x2, void **mem = &wmem){
  13. walloc1d(arr, x2-x1, mem);
  14. (*arr) -= x1;
  15. }
  16. string strReplace_L(string str, string bef, string aft, void *mem = wmem){
  17. int i = 0;
  18. int k;
  19. int*fail;
  20. char*m;
  21. string res;
  22. walloc1d(&fail, bef.size()+1, &mem);
  23. walloc1d(&m, str.size(), &mem);
  24. for(i=(0);i<(str.size());i++){
  25. m[i] = 0;
  26. }
  27. k = fail[0] = -1;
  28. for(i=(0);i<(bef.size());i++){
  29. while(k>=0 && bef[k] != bef[i]){
  30. k = fail[k];
  31. }
  32. fail[i+1] = ++k;
  33. }
  34. k = 0;
  35. for(i=(0);i<(str.size());i++){
  36. while(k >= 0 && bef[k] != str[i]){
  37. k = fail[k];
  38. }
  39. k++;
  40. if(k == bef.size()){
  41. m[i-bef.size()+1] = 1;
  42. k = fail[k];
  43. }
  44. }
  45. i = 0;
  46. while(i < str.size()){
  47. if(m[i]){
  48. res += aft;
  49. i += bef.size();
  50. }
  51. else{
  52. res += str[i++];
  53. }
  54. }
  55. return res;
  56. }
  57. string strReplace_L(string str, vector<string> bef, vector<string> aft, void *mem = wmem){
  58. int i = 0;
  59. int k;
  60. int q;
  61. int*fail;
  62. int*m;
  63. string res;
  64. walloc1d(&fail, bef.size()+1, &mem);
  65. walloc1d(&m, str.size(), &mem);
  66. for(i=(0);i<(str.size());i++){
  67. m[i] = -1;
  68. }
  69. for(q=(bef.size())-1;q>=(0);q--){
  70. k = fail[0] = -1;
  71. for(i=(0);i<(bef[q].size());i++){
  72. while(k>=0 && bef[q][k] != bef[q][i]){
  73. k = fail[k];
  74. }
  75. fail[i+1] = ++k;
  76. }
  77. k = 0;
  78. for(i=(0);i<(str.size());i++){
  79. while(k >= 0 && bef[q][k] != str[i]){
  80. k = fail[k];
  81. }
  82. k++;
  83. if(k == bef[q].size()){
  84. m[i-bef[q].size()+1] = q;
  85. k = fail[k];
  86. }
  87. }
  88. }
  89. i = 0;
  90. while(i < str.size()){
  91. if(m[i] >= 0){
  92. res += aft[m[i]];
  93. i += bef[m[i]].size();
  94. }
  95. else{
  96. res += str[i++];
  97. }
  98. }
  99. return res;
  100. }
  101. #define main dummy_main
  102. int main(){
  103. wmem = memarr;
  104. return 0;
  105. }
  106. #undef main
  107. class Solution{
  108. public:
  109. string interpret(string str){
  110. dummy_main();
  111. str =strReplace_L(str, "()", "o");
  112. str =strReplace_L(str, "(al)", "al");
  113. return str;
  114. }
  115. }
  116. ;
  117. // cLay version 20201206-1
  118.  
  119. // --- original code ---
  120. // #define main dummy_main
  121. // {}
  122. // #undef main
  123. //
  124. // class Solution {
  125. // public:
  126. // string interpret(string str) {
  127. // dummy_main();
  128. // str = strReplace(str, "()", "o");
  129. // str = strReplace(str, "(al)", "al");
  130. // return str;
  131. // }
  132. // };
  133.  
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