Loading... ``` #include <iostream> using namespace std; const int N = 1e5 + 10; int n, k, arr[N]; int eval(int left, int right, int k) { if (left >= right) return arr[left]; int l = left - 1, r = right + 1, tar = arr[((r - l) >> 1) + l]; while(l < r) { do ++l; while(arr[l] < tar); do --r; while(arr[r] > tar); if (l < r) swap(arr[l], arr[r]); } int st = r - left + 1; if (k <= st) return eval(left, r, k); else return eval(r + 1, right, k - st); } int main () { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> k; for (int i = 0; i < n; ++i) cin >> arr[i]; cout << eval(0, n - 1, k); return 0; } ``` 最后修改:2024 年 08 月 08 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏