// Matrice bordată și variabile globale // Moare pe la nivelul 520.000 #include #include #define MAX_N 5000 char a[MAX_N + 2][MAX_N + 2]; int m, n, l, c; int level, maxLevel; void fill() { if (a[l][c] != '.') { return; } a[l][c] = 'o'; level++; if (level > maxLevel) { maxLevel = level; if (level % 100 == 0) { printf("level %d\n", level); } } l--; fill(); l++; c++; fill(); c--; l++; fill(); l--; c--; fill(); c++; } int main(void) { FILE *f = fopen("fill.in", "r"); fscanf(f, "%d %d %d %d\n", &m, &n, &l, &c); for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { a[i][j] = fgetc(f); } assert(fgetc(f) == '\n'); } fclose(f); level = 0; fill(); printf("Nivelul maxim: %d\n", maxLevel); f = fopen("fill.out", "w"); for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { fputc(a[i][j], f); } fputc('\n', f); } fclose(f); }