Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;#define N 1000005int a[N];int partition(int l,int r){int x = a[r],i = l-1;for(int j = l;j < r;j++){if(a[j] <= x){i++;swap(a[j],a[i]);}}swap(a[i+1],a[r]);return i+1;}int find(int l,int r,int k){if(l < r){int q = partition(l,r);int tmp = q+1-l;if(tmp == k) return a[q];if(k < tmp) return find(l,q-1,k);return find(q+1,r,k-tmp);}else if(l == r) return a[l];return -1;}int main(){int n,k;