fork(50) download
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <cstring>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. string s;
  10. string *h, *t;
  11. int *b;
  12. int n;
  13. vector<string> p;
  14. int step=0;
  15. int op;
  16.  
  17.  
  18. int f()
  19. {
  20. for( int i=0 ; i<n ; i++ ) // i -- проход команд (h)
  21.  
  22. if( h[i] == "" )
  23. {
  24. s = t[i]+s;
  25. return b[i];
  26. }
  27. else for( int j=0 ; j<(int)s.length() ; j++ ) // j -- поиск нужной команды в строке (s)
  28.  
  29. if( h[i][0] == s[j] )
  30. {
  31. //Проверка слова на идентичность
  32. int r=0;
  33. for( int k=0 ; k<(int)h[i].length() ; k++ )
  34. {
  35. if( h[i][k] == s[j+k] )
  36. {
  37. r++;
  38. }
  39. }
  40. if( r == h[i].length() )
  41. {
  42. // Замена
  43. string s1="", s2="";
  44. for( int i1=0 ; i1<j ; i1++ )
  45. {
  46. s1 += s[i1];
  47. }
  48. for( int i1 = j + h[i].length() ; i1<s.length() ; i1++ )
  49. {
  50. s2 += s[i1];
  51. }
  52. s = s1 + t[i] + s2;
  53. step++;
  54. //if(op)cout << "Step#" << step << ": " << s << endl;
  55.  
  56. return b[i];
  57. }
  58. }
  59. return 0;
  60. }
  61.  
  62. int main()
  63. {
  64. string sm;
  65.  
  66.  
  67. //------------------------------------------
  68.  
  69. cin >> s;
  70. while( cin>>sm )
  71. {
  72. p.push_back(sm);
  73. }
  74. //cout << "Показывать пошаговые действия?(1\\0)\n";
  75. //cin >> op;
  76. //op = (op?1:0); // небольшой фильтр
  77. n = p.size();
  78. h=new string[n];
  79. t=new string[n];
  80. b=new int[n];
  81.  
  82.  
  83. for( int i=0 ; i<n ; i++ )
  84. {
  85. int j;
  86. for( j=0 ; !(p[i][j]=='=' && p[i][j+1]=='>') && !(p[i][j]=='-' && p[i][j+1]=='>') ; j++ );
  87.  
  88. t[i]=h[i]="";
  89. for( int k=0 ; k<j ; k++ ) h[i]+=p[i][k];
  90. b[i]=(p[i][j]=='='?0:1);
  91. for( int k=j+2 ; k<p[i].size() ; k++ ) t[i]+=p[i][k];
  92. }
  93. for( ; f() ; );
  94. cout << s << endl;
  95. }
  96.  
Success #stdin #stdout 0s 3436KB
stdin
123123
3->
stdout
1212