#include <stdio.h> #include <vector> #include <iostream> using namespace std; int quick_power(int a, int n) { int ret = 1; while(n) { if(n&1) ret = ret * a; a = a * a; n >>= 1; } return ret; } vector<int> tree; int find(int idx1, int idx2) { if(idx1 == idx2) { return idx1; } else if(idx1 > idx2) { return find(idx2, idx1); } else//idx1 < idx2 { return find(idx1, (idx2 - 1) / 2); } } int main() { int n; cin >> n; int m = quick_power(2, n) - 1; tree.resize(m); for(int i = 0; i < m; ++i) { cin >> tree[i]; } int a, b; int idx1 = -1, idx2 = -1; cin >> a >> b; int ans = -1; if(a == -1 || b == -1) { ans = -1; } else { for(int i = 0; i < m; ++i) { if(a == tree[i]) idx1 = i; else if(b == tree[i]) idx2 = i; } if(a == b) idx2 = idx1; if(idx1 == -1 || idx2 == -1) { ans = -1; } else { int idx = find(idx1, idx2); ans = tree[idx]; } } /* cout << idx << endl; */ /* cout << tree[idx] << endl; */ cout << ans << endl; return 0; }
点赞 评论

相关推荐

程序员牛肉:可以说含金量不如王者荣耀省标。
点赞 评论 收藏
分享
2025-11-04 19:05
已编辑
东莞城市学院 单片机
不知道怎么取名字_:你这个要实习两年?哪有这么久的,感觉就是即使你毕业了,但还按实习的话,是不是不用给你缴社保公积金啥的
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务