Source code for submission s1181

Go to diff to previous submission

bugs.cpp

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<deque>
  4.  
  5. using namespace std;
  6.  
  7. int main ( void )
  8. {
  9. int number;
  10. string error;
  11. char character;
  12.  
  13. while ( cin >> number >> error )
  14. {
  15. scanf ( "%c", &character);
  16. for ( int i = 0; i < number; i++ )
  17. {
  18.  
  19. int counter = 0;
  20. deque <char> stack;
  21.  
  22. while ( 1 )
  23. {
  24. scanf ( "%c", &character);
  25. if ( character == '\n' )
  26. {
  27. break;
  28. }
  29.  
  30.  
  31. if ( character == error [ error . length () - 1 ] )
  32. {
  33. stack . push_back ( character );
  34. int index = error . length () - 1;
  35. deque<char>::iterator n;
  36. int i = 0;
  37. for ( n = stack . end (), i = ( (int) ( stack . size () ) - 1 ); n != stack . begin (); n--, i-- )
  38. {
  39. //cout << stack [i] << " " << error [index] << endl;
  40. if ( stack [i] == error [index] )
  41. {
  42. // cout << "shoda na " << error [index] << endl;
  43. if ( index == 0 )
  44. {
  45. deque<char>::iterator x;
  46. for ( x = n; x <= ( n + error . length () - 1 ); x++ )
  47. stack . erase ( x );
  48.  
  49. break;
  50. }
  51.  
  52. index--;
  53. }
  54. else
  55. break;
  56. }
  57.  
  58. }
  59. else
  60. stack . push_back ( character );
  61.  
  62. counter++;
  63. }
  64.  
  65. if ( !counter )
  66. {
  67. cout << endl;
  68. continue;
  69. }
  70.  
  71.  
  72. for ( int i = 0; i < ( int ) stack . size (); i++ )
  73. cout << stack [i];
  74. cout << endl;
  75. }
  76. }
  77. }

Diff to submission s981

bugs.cpp

--- c4.s981.cteam017.bugs.cpp.0.bugs.cpp
+++ c4.s1181.cteam017.bugs.cpp.0.bugs.cpp
@@ -1,4 +1,5 @@
 #include<iostream>
 #include<cstdio>
+#include<deque>
 
 using namespace std;
@@ -8,5 +9,4 @@
     int number;
     string error;
-    string line;
     char character;
     
@@ -18,5 +18,5 @@
             
             int counter = 0;
-            line . clear ();
+            deque <char> stack;
             
             while ( 1 )
@@ -27,6 +27,36 @@
                     break;
                 }
+                   
                 
-                line . push_back ( character );
+               if ( character == error [ error . length () - 1 ] )
+               {
+                   stack . push_back ( character );
+                   int index = error . length () - 1;
+                   deque<char>::iterator n;
+                   int i = 0;
+                  for ( n = stack . end (), i = ( (int) ( stack . size () ) - 1 ); n != stack . begin (); n--, i-- )
+                  {
+                      //cout << stack [i] << " " << error [index] << endl;
+                      if ( stack [i] == error [index] )
+                      {
+                         // cout << "shoda na " << error [index] << endl;
+                          if ( index == 0 )
+                          {
+                              deque<char>::iterator x;
+                              for ( x = n; x <= ( n + error . length () - 1 ); x++ )
+                                stack . erase ( x );
+                              
+                              break;
+                          }
+                          
+                          index--;
+                      }
+                      else
+                          break;
+                  }
+                   
+               }
+               else
+                    stack . push_back ( character );
                 
                 counter++;
@@ -39,16 +69,8 @@
             }
             
-            while ( 1 )
-            {
-                string::size_type n;
-
-                n = line . rfind ( error.c_str() );
-                if ( n == string::npos )
-                 break;
-                
-                line . erase ( n, error . length () );
-                
-            }
-            cout << line << endl;
+            
+            for ( int i = 0; i < ( int ) stack . size (); i++ )
+                cout << stack [i];
+            cout << endl;
         }
     }