fork download
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. void naiveSearchRemove();
  6.  
  7. string TXT;
  8. list<string> SPELLS;
  9. int MAX_SPELL = 0;
  10.  
  11.  
  12. int main(){
  13. cin>>TXT;
  14. int t, i;
  15. scanf("%d", &t);
  16. for (i = 0; i < t; i++){
  17. string spell;
  18. cin>>spell;
  19. if (spell.length() > MAX_SPELL)
  20. MAX_SPELL = spell.length();
  21. SPELLS.push_back(spell);
  22. }
  23. naiveSearchRemove();
  24. cout<<TXT;
  25. return 0;
  26. }
  27.  
  28. void naiveSearchRemove(){
  29. int i,
  30. j,
  31. k,
  32. n = TXT.length();
  33. list<string> _SPELLS = SPELLS;
  34. j = 0, k = 0;
  35. for (i = 0; i < n;){
  36. for (list<string>::iterator it = _SPELLS.begin(); it != _SPELLS.end(); ++it){
  37. if (j == it->length()){
  38. TXT.erase(i, j);
  39. i -= MAX_SPELL - 1;
  40. if (i < 0)
  41. i = -1;
  42. k = i;
  43. _SPELLS = SPELLS;
  44. j = -1;
  45. break;
  46. }
  47. if (i + j >= n || TXT[i + j] != (*it)[j]){
  48. _SPELLS.erase(it--);
  49. }
  50. }
  51. if (_SPELLS.size() == 0){
  52. _SPELLS = SPELLS;
  53. k = ++i;
  54. j = 0;
  55. }else{
  56. j++;
  57. k++;
  58. }
  59. }
  60. }
  61.  
Success #stdin #stdout 0s 4520KB
stdin
Standard input is empty
stdout
Standard output is empty