Source code for submission s778

Go to diff to previous submission

main.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5.  
  6. char* buffer;
  7. char pattern[1024];
  8.  
  9. int blength;
  10. int plength;
  11.  
  12. int i, n;
  13.  
  14. int replace()
  15. {
  16. char* start;
  17. char* found;
  18. int offset;
  19.  
  20. int j;
  21.  
  22. offset = 0;
  23.  
  24. start = buffer;
  25.  
  26. do
  27. {
  28. found = strstr(start, pattern);
  29.  
  30. if (found)
  31. {
  32. memmove(found, found + plength, blength + 1);
  33.  
  34. blength -= plength;
  35.  
  36. start = found - plength;
  37. if (start < buffer)
  38. {
  39. start = buffer;
  40. }
  41. }
  42. }while(found);
  43.  
  44. printf("%s", buffer);
  45.  
  46. return 0;
  47. }
  48.  
  49. int main(int argc, char *argv[])
  50. {
  51. buffer = (char*)(malloc(4000020));
  52. while (scanf("%d %s", &n, pattern) == 2)
  53. {
  54. plength = strlen(pattern);
  55. gets(buffer); /* sezereme konec radky */
  56.  
  57. for (i = 0; i < n; i++)
  58. {
  59. fgets(buffer, 2000010, stdin);
  60. blength = strlen(buffer);
  61. replace();
  62. }
  63. }
  64. free(buffer);
  65. return 0;
  66. }
  67.  

Diff to submission s763

main.c

--- c4.s763.cteam116.bugs.c.0.main.c
+++ c4.s778.cteam116.bugs.c.0.main.c
@@ -30,5 +30,5 @@
       if (found)
       {
-        memmove(found, found + plength, 2000020);
+        memmove(found, found + plength, blength + 1);
         
         blength -= plength;
@@ -54,9 +54,9 @@
         plength = strlen(pattern);
         gets(buffer); /* sezereme konec radky */
-        blength = strlen(buffer);
         
         for (i = 0; i < n; i++)
         {
             fgets(buffer, 2000010, stdin);
+            blength = strlen(buffer);
             replace();
         }