| |
| |
| |
| |
| |
| |
| |
| #include <bits/stdc++.h> |
| |
| using namespace std; |
| |
| template<class T> |
| void debugVector(const T &a) { |
| cout << "[ "; |
| for (size_t i = 0; i < a.size(); ++i) { |
| cout << a[i] << (i == a.size() - 1 ? " " : ", "); |
| } |
| cout << "]" << endl; |
| } |
| |
| template<class T> |
| void debugMatrix2(const T &a) { |
| for (size_t i = 0; i < a.size(); ++i) { |
| debugVector(a[i]); |
| } |
| } |
| |
| template<class T> |
| using matrix2 = vector<vector<T>>; |
| |
| template<class T> |
| vector<vector<T>> getMatrix2(size_t n, size_t m, T init = T()) { |
| return vector<vector<T>>(n, vector<T>(m, init)); |
| } |
| |
| template<class T> |
| using matrix3 = vector<vector<vector<T>>>; |
| |
| template<class T> |
| vector<vector<vector<T>>> getMatrix3(size_t x, size_t y, size_t z, T init = T()) { |
| return vector<vector<vector<T>>>(x, vector<vector<T>>(y, vector<T>(z, init))); |
| } |
| |
| vector<int> genBigInteger(string a) { |
| vector<int> res; |
| for (int i = a.size() - 1; i >= 0; --i) { |
| res.push_back(a[i] - '0'); |
| } |
| return res; |
| } |
| |
| void printBigInteger(vector<int> a) { |
| for (size_t i = a.size() - 1; i >= 0; --i) { |
| cout << a[i]; |
| } |
| } |
| |
| vector<int> addBigInteger(vector<int> a, vector<int> b) { |
| vector<int> res; |
| int pre = 0; |
| for (size_t i = 0; i < a.size() || i < b.size() || pre; ++i) { |
| if (i < a.size()) pre += a[i]; |
| if (i < b.size()) pre += b[i]; |
| res.push_back(pre % 10); |
| pre /= 10; |
| } |
| return res; |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| void divide(int n, int x, int y, int zx, int zy) { |
| vector<pair<int, int>> tmpXY = {{zx, zy}, {zx, zy + 1}, {zx + 1, zy}, {zx + 1, zy + 1}}; |
| vector<pair<int, int>> tmpzXY = {{zx - n / 2, zy - n / 2}, {zx - n / 2, zy + n / 2}, |
| {zx + n / 2, zy - n / 2}, {zx + n / 2, zy + n / 2}}; |
| if (x <= zx && y <= zy) { |
| cout << zx + 1 << " " << zy + 1 << " " << 1 << endl; |
| tmpXY[0].first = x; |
| tmpXY[0].second = y; |
| } else if (x <= zx && y > zy) { |
| cout << zx + 1 << " " << zy << " " << 2 << endl; |
| tmpXY[1].first = x; |
| tmpXY[1].second = y; |
| } else if (x > zx && y <= zy) { |
| cout << zx << " " << zy + 1 << " " << 3 << endl; |
| tmpXY[2].first = x; |
| tmpXY[2].second = y; |
| } else { |
| cout << zx << " " << zy << " " << 4 << endl; |
| tmpXY[3].first = x; |
| tmpXY[3].second = y; |
| } |
| if (n == 1) { |
| return; |
| } |
| divide(n / 2, tmpXY[0].first, tmpXY[0].second, tmpzXY[0].first, tmpzXY[0].second); |
| divide(n / 2, tmpXY[1].first, tmpXY[1].second, tmpzXY[1].first, tmpzXY[1].second); |
| divide(n / 2, tmpXY[2].first, tmpXY[2].second, tmpzXY[2].first, tmpzXY[2].second); |
| divide(n / 2, tmpXY[3].first, tmpXY[3].second, tmpzXY[3].first, tmpzXY[3].second); |
| } |
| |
| int main() { |
| ios::sync_with_stdio(false); |
| cin.tie(0); |
| |
| int k, x, y; |
| cin >> k >> x >> y; |
| |
| divide(pow(2, k - 1), x, y, pow(2, k - 1), pow(2, k - 1)); |
| return 0; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!