Pagini recente » Cod sursa (job #2390031) | Cod sursa (job #2110489) | Cod sursa (job #2701320) | Cod sursa (job #55638) | Cod sursa (job #1483373)
#include <bits/stdc++.h>
using namespace std;
int a[3000005], n, k;
void Citire()
{
ifstream fin("sdo.in");
fin >> n >> k;
for (int i = 1; i <= n; i++)
fin >> a[i];
fin.close();
}
int Pivot(int st, int dr)
{
int i, j, piv;
i = st+1;
j = dr;
swap(a[st], a[(st+dr)/2]);
piv = a[st];
while (i <= j)
{
if (a[i] <= piv) i++;
if (a[j] >= piv) j--;
if (i < j && a[i] > piv && a[j] < piv)
{
swap(a[i], a[j]);
i++; j--;
}
}
swap(a[st], a[i-1]);
return i - 1;
}
int Kth_Element(int st, int dr)
{
int p;
if (st == dr) return a[st];
p = Pivot(st,dr);
if (p == k) return a[p];
if (p < k) return Kth_Element(p + 1, dr);
return Kth_Element(st, p - 1);
}
int main()
{
Citire();
int v = Kth_Element(1, n);
ofstream fout ("sdo.out");
fout << v << "\n";
fout.close();
return 0;
}