/* * File: tribune.cpp * Author: cteam038 * * Created on October 22, 2016, 9:29 AM */ #include #include #include #include int setBit(int bits){ for (int i = 0; i < 31; ++i){ if (bits & (1 << i)){ return i; } } } /* * */ int main(int argc, char** argv) { std::ios_base::sync_with_stdio(false); int team_size; while (std::cin >> team_size){ std::cin.ignore(100, '\n'); std::string team_line; std::vector line_ids(team_size); std::vector column_ids(team_size); std::vector field; int diff_line = -1; int diff_column = -1; char correct_letter = '\''; int teams = 0; int tmp; for (int t = 0; t < team_size; ++t){ std::getline(std::cin, team_line); for (int i = 0; i < team_size; ++i){ int move_by = team_line[i] - 'A'; line_ids[t] ^= (1 << move_by); column_ids[i] ^= (1 << move_by); teams |= (1 << move_by); } field.push_back(team_line); } int c = std::count(line_ids.begin(), line_ids.end(), line_ids[0]); if (c == 1){ diff_line = 0; tmp = line_ids[0] | line_ids[1]; tmp ^= line_ids[0]; correct_letter = 'A' + setBit(tmp); } else { for (int i = 1; i < team_size; ++i){ if (line_ids[0] != line_ids[i]){ diff_line = i; tmp = line_ids[0] | line_ids[i]; tmp ^= line_ids[i]; correct_letter = 'A' + setBit(tmp); break; } } } c = std::count(column_ids.begin(), column_ids.end(), column_ids[0]); if (c == 1){ diff_column = 0; } else { for (int i = 1; i < team_size; ++i){ if (column_ids[0] != column_ids[i]){ diff_column = i; break; } } } if (field[diff_line][diff_column] == correct_letter){ // incorrect answer, we need to check next set bit tmp ^= (1 << setBit(tmp)); correct_letter = 'A' + setBit(tmp);// get next; } std::cout << diff_line + 1 << ' ' << diff_column + 1 << ' ' << correct_letter << '\n'; } return 0; }