Pagini recente » Cod sursa (job #3180361) | Cod sursa (job #128710) | Cod sursa (job #2503801) | Cod sursa (job #2594358) | Cod sursa (job #3261302)
#include <bits/stdc++.h>
using namespace std;
/**
12
10 4 18 19 2 15 1 77 6 7 20 12
*/
ifstream fin("statisticiordine.in");
ofstream fout("statisticiordine.out");
int a[3000002];
int n, k;
void Citire()
{
fin >> n >> k;
for (int i = 1; i <= n; i++)
fin >> a[i];
}
int Pivot(int st, int dr)
{
int i, k, pivot;
swap(a[st], a[(st + dr) / 2]);
pivot = a[st];
k = st;
for (i = st + 1; i <= dr; i++)
if (a[i] <= pivot)
{
k++;
swap(a[k], a[i]);
}
swap(a[st], a[k]);
return k;
}
/// Numar de operatii cel mult 2*n
int SDO(int st, int dr)
{
int p = Pivot(st, dr);
if (p == k) return a[p];
if (p < k) return SDO(p + 1, dr);
return SDO(st, p - 1);
}
int main()
{
Citire();
fout << SDO(1, n);
return 0;
}