Source code for submission s788

Go to diff to previous submission

bugs.cpp

  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. /*
  7. typedef struct {
  8. const char *needle;
  9. size_t npos;
  10. size_t len;
  11. size_t *prefix_table;
  12. } kmp_ctx;
  13.  
  14. void kmp_init(kmp_ctx *ctx, const char *needle) {
  15. size
  16. }
  17. */
  18.  
  19. int main(void) {
  20. int T;
  21. char B[1024];
  22. char line[2000004];
  23.  
  24. char line2[2000004];
  25.  
  26. int Blen;
  27.  
  28. while (scanf(" %d %s", &T, B) == 2) {
  29. Blen = strlen(B);
  30.  
  31. while (getchar() != '\n');
  32.  
  33. for (int i = 0; i < T; i++) {
  34. fgets(line, 2000004, stdin);
  35.  
  36. char *l1 = line;
  37. char *l2 = line2;
  38. char *tmp;
  39.  
  40. char *s = l1;
  41. char *out = l2;
  42. bool changed;
  43. do {
  44. char *f;
  45. changed = false;
  46. while ((f = strstr(s, B)) != NULL) {
  47. changed = true;
  48. while (s != f) {
  49. *(out++) = *(s++);
  50. }
  51. s += Blen;
  52. }
  53. strcpy(out, s);
  54.  
  55. tmp = l1;
  56. l1 = l2;
  57. l2 = tmp;
  58.  
  59. s = l1;
  60. out = l2;
  61. } while (changed);
  62.  
  63. printf("%s", line);
  64. }
  65. }
  66.  
  67. return 0;
  68. }
  69.  

Diff to submission s779

bugs.cpp

--- c4.s779.cteam091.bugs.cpp.0.bugs.cpp
+++ c4.s788.cteam091.bugs.cpp.0.bugs.cpp
@@ -33,8 +33,11 @@
                 for (int i = 0; i < T; i++) {
                         fgets(line, 2000004, stdin);
-                        int line_len = strlen(line);
                 
-                        char *s = line;
-                        char *out = line2;
+                        char *l1 = line;
+                        char *l2 = line2;
+                        char *tmp;
+                        
+                        char *s = l1;
+                        char *out = l2;
                         bool changed;
                         do {
@@ -50,7 +53,10 @@
                                 strcpy(out, s); 
                                 
-                                memcpy(line, line2, line_len);
-                                s = line;
-                                out = line2;
+                                tmp = l1;
+                                l1 = l2;
+                                l2 = tmp;
+                                
+                                s = l1;
+                                out = l2;
                         } while (changed);