/* Problem E */ #include int matrix[102][102], n; int checkline(int i) { int k, sum; for (k = sum = 0; k < n; k++) sum += matrix[i][k]; return !(sum % 2); } int checklines() { int k, ok, line; line = -1; for (k = 0; k < n; k++) { ok = checkline(k); if (line >= 0 && !ok) return -2; if (!ok) line = k; } return line; } int checkcol(int i) { int k, sum; for (k = sum = 0; k < n; k++) sum += matrix[k][i]; return !(sum % 2); } int checkcols() { int k, ok, col; col = -1; for (k = 0; k < n; k++) { ok = checkcol(k); if (col >= 0 && !ok) return -2; if (!ok) col = k; } return col; } int main() { FILE *f; int i, j, row, col; f = fopen("error.in", "r"); fscanf(f, "%i\n", &n); while (n) { for (i = 0; i < n; i++) for (j = 0; j < n; j++) fscanf(f, "%i", &matrix[i][j]); row = checklines(); col = checkcols(); if (row == -1 && col == -1) printf("OK\n"); else if (row < 0 || col < 0) printf("Corrupt\n"); else printf("Change bit (%i,%i)\n", row+1, col+1); fscanf(f, "%i\n", &n); } fclose(f); return 0; }