func_code_string: #include <bits/stdc++.h>   using namespace std;   int pct(int x) { return __builtin_popcount(x); }   int pct(long long x) { return __builtin_popcountll(x); }   int bt(int x) { return 31 - __builtin_clz(x); }   int bt(long long x) { return 63 - __builtin_clzll(x); }   int cdiv(int a, int b) { return a / b + !(a < 0 || a % b == 0); }   long long cdiv(long long a, long long b) {     return a / b + !(a < 0 || a % b == 0);   }   int nxt_C(int x) {     int c = x & -x, r = x + c;     return (((r ^ x) >> 2) / c) | r;   }   long long nxt_C(long long x) {     long long c = x & -x, r = x + c;     return (((r ^ x) >> 2) / c) | r;   }   vector<int> get_bits(int mask) {     vector<int> bb;     while (mask) {       int b = bt(mask);       bb.push_back(b);       mask ^= (1 << b);     }     reverse(bb.begin(), bb.end());     return bb;   }   int get_mask(vector<int> v) {     int mask = 0;     for (int x : v) {       mask ^= (1 << x);     }     return mask;   }   template <typename T>   void uniq(vector<T> &v) {     sort(v.begin(), v.end());     v.resize(unique(v.begin(), v.end()) - v.begin());   }   mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());   long long rand(long long l, long long r) {     uniform_int_distribution<long long> uid(l, r);     return uid(rng);   }   void sc() {}   template <typename Head, typename... Tail>   void sc(Head &H, Tail &...T) {     cin >> H;     sc(T...);   }   const int mod = 1e9 + 7;   int pwr(int a, long long b) {     int ans = 1;     while (b) {       if (b & 1) ans = (ans * 1LL * a) % mod;       a = (a * 1LL * a) % mod;       b >>= 1;     }     return ans;   }   const int N = 2e5 + 5;   int a[N];   int dp[N][2];   int n, k;   bool f(int x) {     dp[0][0] = 0;     dp[0][1] = 0;     for (int i = 1; i <= n; i++) {       dp[i][0] = dp[i][1] = 0;     }     for (int i = 0; i <= n - 1; i++) {       for (int j = 0; j <= 1; j++) {         dp[i + 1][j] = max(dp[i + 1][j], dp[i][j]);         if (a[i + 1] > x && !j) continue;         dp[i + 1][j ^ 1] = max(dp[i + 1][j ^ 1], dp[i][j] + 1);       }     }     return max(dp[n][0], dp[n][1]) >= k;   }   void solve() {     sc(n, k);     for (int i = 1; i <= n; i++) {       sc(a[i]);     }     int l = 0, r = 1e9 + 5;     while (r - l > 1) {       int m = (l + r) >> 1;       if (f(m))         r = m;       else         l = m;     }     cout << r;   }   int main() {     ios ::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     int t = 1;     for (int tt = 1; tt <= t; tt++) {       solve();     }     return 0;   }   