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. string strReplace_L(string str, string bef, string aft, void *mem = wmem){
  13. int i = 0;
  14. int k;
  15. int *fail;
  16. char *m;
  17. string res;
  18. walloc1d(&fail, bef.size()+1, &mem);
  19. walloc1d(&m, str.size(), &mem);
  20. for(i=(0);i<(str.size());i++){
  21. m[i] = 0;
  22. }
  23. k = fail[0] = -1;
  24. for(i=(0);i<(bef.size());i++){
  25. while(k>=0 && bef[k] != bef[i]){
  26. k = fail[k];
  27. }
  28. fail[i+1] = ++k;
  29. }
  30. k = 0;
  31. for(i=(0);i<(str.size());i++){
  32. while(k >= 0 && bef[k] != str[i]){
  33. k = fail[k];
  34. }
  35. k++;
  36. if(k == bef.size()){
  37. m[i-bef.size()+1] = 1;
  38. k = fail[k];
  39. }
  40. }
  41. i = 0;
  42. while(i < str.size()){
  43. if(m[i]){
  44. res += aft;
  45. i += bef.size();
  46. }
  47. else{
  48. res += str[i++];
  49. }
  50. }
  51. return res;
  52. }
  53. string strReplace_L(string str, vector<string> bef, vector<string> aft, void *mem = wmem){
  54. int i = 0;
  55. int k;
  56. int q;
  57. int *fail;
  58. int *m;
  59. string res;
  60. walloc1d(&fail, bef.size()+1, &mem);
  61. walloc1d(&m, str.size(), &mem);
  62. for(i=(0);i<(str.size());i++){
  63. m[i] = -1;
  64. }
  65. for(q=(bef.size())-1;q>=(0);q--){
  66. k = fail[0] = -1;
  67. for(i=(0);i<(bef[q].size());i++){
  68. while(k>=0 && bef[q][k] != bef[q][i]){
  69. k = fail[k];
  70. }
  71. fail[i+1] = ++k;
  72. }
  73. k = 0;
  74. for(i=(0);i<(str.size());i++){
  75. while(k >= 0 && bef[q][k] != str[i]){
  76. k = fail[k];
  77. }
  78. k++;
  79. if(k == bef[q].size()){
  80. m[i-bef[q].size()+1] = q;
  81. k = fail[k];
  82. }
  83. }
  84. }
  85. i = 0;
  86. while(i < str.size()){
  87. if(m[i] >= 0){
  88. res += aft[m[i]];
  89. i += bef[m[i]].size();
  90. }
  91. else{
  92. res += str[i++];
  93. }
  94. }
  95. return res;
  96. }
  97. #define main dummy_main
  98. int main(){
  99. wmem = memarr;
  100. return 0;
  101. }
  102. #undef main
  103. class Solution{
  104. public:
  105. string entityParser(string text){
  106. dummy_main();
  107. vector<string> bef;
  108. vector<string> aft;
  109. bef.push_back("&quot;");
  110. aft.push_back("\"");
  111. bef.push_back("&apos;");
  112. aft.push_back("\'");
  113. bef.push_back("&amp;");
  114. aft.push_back("&");
  115. bef.push_back("&gt;");
  116. aft.push_back(">");
  117. bef.push_back("&lt;");
  118. aft.push_back("<");
  119. bef.push_back("&frasl;");
  120. aft.push_back("/");
  121. return strReplace_L(text, bef, aft);
  122. }
  123. }
  124. ;
  125. // cLay varsion 20200419-1
  126.  
  127. // --- original code ---
  128. // #define main dummy_main
  129. // {}
  130. // #undef main
  131. //
  132. // class Solution {
  133. // public:
  134. // string entityParser(string text) {
  135. // dummy_main();
  136. // vector<string> bef, aft;
  137. // bef.push_back("&quot;"); aft.push_back("\"");
  138. // bef.push_back("&apos;"); aft.push_back("\'");
  139. // bef.push_back("&amp;"); aft.push_back("&");
  140. // bef.push_back("&gt;"); aft.push_back(">");
  141. // bef.push_back("&lt;"); aft.push_back("<");
  142. // bef.push_back("&frasl;"); aft.push_back("/");
  143. // return strReplace(text, bef, aft);
  144. // }
  145. // };
  146.  
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