Go to diff to previous submission
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define eatline() {while (getchar() != '\n');} int max(int a, int b) { return a > b ? a : b; } char riadok[2000001]; int main() { int riadkov; while (scanf("%d", &riadkov) == 1) { char bug[1001]; scanf("%s", bug); eatline(); for (int i = 0; i < riadkov; i++) { int bugLen = strlen(bug); gets(riadok); int riadokLen = strlen(riadok); char * first; int offset = 0; while (first = strstr(riadok + offset, bug)) { offset = max(first - riadok - bugLen, 0); memcpy(first, first + bugLen, riadokLen - (first - riadok)); // strcpy(first, first + bugLen); } puts(riadok); } } return 0; }
--- c4.s1316.cteam072.bugs.cpp.0.bugs.cpp +++ c4.s1374.cteam072.bugs.cpp.0.bugs.cpp @@ -28,13 +28,14 @@ gets(riadok); + int riadokLen = strlen(riadok); char * first; int offset = 0; - while (first = strstr(riadok, bug)) + while (first = strstr(riadok + offset, bug)) { -// offset = max(first - riadok - bugLen, 0); -// memcpy(riadok + first, riadok + first + bugLen, 2000001 - (first - riadok)); - strcpy(first, first + bugLen); + offset = max(first - riadok - bugLen, 0); + memcpy(first, first + bugLen, riadokLen - (first - riadok)); +// strcpy(first, first + bugLen); } puts(riadok);