intmain(){ int T; cin >> T; for (int cas = 1; cas <= T; ++cas) { int x, y, fx = 0, fy = 0; cin >> x >> y; if (x < 0) fx = 1, x = -x; if (y < 0) fy = 1, y = -y; ll tot = 1; int lim = 0; while (tot <= x + y) tot <<= 1, ++lim; tot -= 1; int sp = tot ^ (x + y); sp >>= 1; string ans; for (int i = 0; i < lim; ++i) { if (x >> i & 1) { if (y >> i & 1) { ans = "IMPOSSIBLE"; break; } if (sp >> i & 1) { x += 1 << i; if (fx) ans.push_back('E'); else ans.push_back('W'); } else { if (fx) ans.push_back('W'); else ans.push_back('E'); } } elseif (y >> i & 1) { if (sp >> i & 1) { y += 1 << i; if (fy) ans.push_back('N'); else ans.push_back('S'); } else { if (fy) ans.push_back('S'); else ans.push_back('N'); } } else { ans = "IMPOSSIBLE"; break; } } printf("Case #%d: %s\n", cas, ans.c_str()); } return0; }
intmain(){ int T; cin >> T; for (int cas = 1; cas <= T; ++cas) { int r, c, f = 0; cin >> r >> c;
string s; for (int i = 0; i < c; ++i) { for (int j = 0; j < r; ++j) { s.push_back(j); } } vector<pii> ans; while (1) { vector<char> p; int i, a, b = -1; p.emplace_back(s[0]); for (i = 1; i < r * c; ++i) { if (s[i] != s[i - 1]) { if (p.size() == 2) { a = i; break; } p.emplace_back(s[i]); } } for (; i < r * c; ++i) { if (s[i - 1] == p[0] && s[i] == p[1]) { b = i; break; } } if (b == -1) break; ans.emplace_back(a, b); s = s.substr(a, b - a) + s.substr(0, a) + s.substr(b); } if (!is_sorted(s.begin(), s.end())) { ans.emplace_back(c - 1, r * c - 1); } printf("Case #%d: %d\n", cas, ans.size()); for (auto &i : ans) printf("%d %d\n", i.first, i.second - i.first); } return0; }