diff --git a/P10456.cpp b/P10456.cpp new file mode 100644 index 0000000..882e0ca --- /dev/null +++ b/P10456.cpp @@ -0,0 +1,53 @@ +// 116 +#include +using namespace std; +bool dddd[5][5]; +bool hang[5]; +bool lie[5]; +bool chosen[5][5]; +vector> cc, anss; +void in() +{ + for (int i = 0; i < 4; ++i) + { + string s; + cin >> s; + for (int j = 0; j < 4; ++j) + dddd[i][j] = (s[j] == '+'); + } +} +void dfs(int x, int y) +{ + if (x == 4) + { + for (int i = 0; i < 4; ++i) + { + for (int j = 0; j < 4; ++j) + { + if (hang[i] ^ lie[j] ^ dddd[i][j] ^ chosen[i][j]) + return; + } + } + if (anss.empty() || (int)cc.size() < anss.size()) + { + anss = cc; + } + return; + } + hang[x] = !hang[x], lie[y] = !lie[y], chosen[x][y] = 1; + cc.push_back({x, y}); + dfs((y == 3) ? x + 1 : x, (y == 3) ? 0 : y + 1); + hang[x] = !hang[x], lie[y] = !lie[y], chosen[x][y] = 0; + cc.pop_back(); + dfs((y == 3) ? x + 1 : x, (y == 3) ? 0 : y + 1); +} +int main() +{ + in(); + dfs(0, 0); + printf("%d\n", anss.size()); + for (int i = 0; i < (int)anss.size(); ++i) + { + printf("%d %d\n", anss[i].first + 1, anss[i].second + 1); + } +} \ No newline at end of file