Pagini recente » Cod sursa (job #2495499) | Cod sursa (job #2484030) | Cod sursa (job #2862676) | Cod sursa (job #2247425) | Cod sursa (job #3227480)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <vector>
#include <queue>
#define x first
#define y second
#define ll long long
#define pb push_back
#define bg begin()
#define ed end()
#define cl clear()
#define pii pair<int, int>
#define int ll
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
const int MOD = 123457;
const char nl = '\n';
const int NMAX = 4e6 + 5;
const int INF = 1e9;
int v[NMAX];
int partition(int v[], int l, int r){
int pivot = v[l];
int cnt = 0;
for(int i = l + 1; i <= r; ++i){
if(v[i] <= pivot)
cnt++;
}
int pos = l + cnt;
swap(v[pos], v[l]);
int i = l, j = r;
while(i < pos && j > pos){
while(v[i] <= pivot)
i++;
while(v[j] > pivot)
j--;
if(i < pos && j > pos)
swap(v[i++], v[j--]);
}
return pos;
}
void quicksort(int v[], int l, int r){
if(l >= r)
return;
int p = partition(v, l ,r);
quicksort(v, l, p - 1);
quicksort(v, p + 1, r);
}
signed main()
{
int n, k;
in >> n >> k;
for(int i = 1; i <= n; ++i)
in >> v[i];
quicksort(v, 1, n);
out << v[k];
return 0;
}