Pagini recente » Cod sursa (job #165847) | Cod sursa (job #2357725) | Cod sursa (job #2195979) | Cod sursa (job #1780247) | Cod sursa (job #2060972)
#include <bits/stdc++.h>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
const int Nmax = 3e6 + 5;
int a[Nmax], n;
int partition(int a[], int st, int dr)
{
int pozitie_pivot = st + rand()%(dr - st + 1);
int pivot = a[pozitie_pivot];
int i = st - 1;
swap(a[dr], a[pozitie_pivot]);
for(int j = st; j < dr; ++j) {
if(a[j] < pivot) {
++i;
swap(a[i], a[j]);
}
}
swap(a[i + 1], a[dr]);
return i + 1;
}
void quicksort(int a[], int st, int dr, int k)
{
if(st < dr) {
int pivot = partition(a, st, dr);
if(k < pivot) {
quicksort(a, st, pivot - 1, k);
}
if(k > pivot) {
quicksort(a, pivot + 1, dr, k);
}
}
}
int main()
{
srand(time(NULL));
int k;
f >> n >> k;
for(int i = 1; i <= n; ++i) f >> a[i];
quicksort(a, 1, n, k);
g << a[k];
return 0;
}