Pagini recente » Cod sursa (job #2629696) | Cod sursa (job #328426) | Cod sursa (job #300445) | Cod sursa (job #115662) | Cod sursa (job #1209880)
#include<stdio.h>
FILE *in, *out;
int N, A[3000005], K;
void open()
{
in = fopen("sdo.in", "rt");
out = fopen("sdo.out", "wt");
}
void read()
{
fscanf(in, "%d %d", &N, &K);
for (int i = 0; i < N; i++)
fscanf(in, "%d", &A[i]);
}
void swap(int i , int j)
{
int aux = A[i];
A[i] = A[j];
A[j] = aux;
}
int sdo(int left, int right, int order)
{
if (left >= right) return A[left];
int i = left, j = right, piv = A[(left + right) / 2];
while (i <= j)
{
while (A[i] < piv) i++;
while (A[j] > piv) j--;
if (i <= j)
{
swap(i, j);
i++, j--;
}
}
if (left <= order && order <= j) return sdo(left, j, order);
if (i <= order && order <= right) return sdo(i, right, order);
return -1;
}
int main()
{
open();
read();
fprintf(out, "%d " , sdo(0, N - 1, K-1));
return 0;
}