Pagini recente » Cod sursa (job #10070) | Cod sursa (job #100341) | Cod sursa (job #842656) | Cod sursa (job #2327804) | Cod sursa (job #3125168)
#include<fstream>
#include<climits>
#include<cstdlib>
#define dim 4000005
using namespace std;
ifstream in ("statisticiordine.in");
ofstream out("statisticiordine.out");
unsigned int n, k, v[dim];
unsigned int pivot(int st, int dr)
{
bool dst = 0, ddr = 1;
int mid = (st + dr) / 2;
swap(v[st], v[mid]);
while(st < dr) {
if (v[st] > v[dr]) {
swap(v[st], v[dr]);
swap(dst, ddr);
}
st += dst;
dr -= ddr;
}
return st;
}
unsigned int quickSelect(int st, int dr)
{
if (st <= dr) {
unsigned int p = pivot(st, dr);
if (p == k)
return v[p];
else if (k < p)
quickSelect(st, p-1);
else
quickSelect(p+1, dr);
}
}
int main()
{
in >> n >> k;
for (int i = 1; i <= n; i++)
in >> v[i];
out << quickSelect(1, n);
}