Pagini recente » Cod sursa (job #1852401) | Cod sursa (job #2197377) | Cod sursa (job #1416725) | Cod sursa (job #2302052) | Cod sursa (job #935198)
Cod sursa(job #935198)
/*
ID: i.adri1
PROG: sdo
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <assert.h>
#include <math.h>
#include <string.h>
#include <string>
#include <list>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <algorithm>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
int sdo(int *v, int k, int l, int r)
{
if (r - l < 1)
return v[l];
int piv = rand() % (r-l+1) + l;
swap(v[piv], v[r]);
piv = v[r];
int pfge = l;
for (int i = l; i < r; i++)
if (v[i] < piv) {
swap(v[i], v[pfge]);
pfge++;
}
swap(v[pfge], v[r]);
if (pfge == k)
return v[pfge];
if (pfge > k)
return sdo(v, k, l, pfge - 1);
else
return sdo(v, k, pfge + 1, r);
}
int main()
{
int n, k = 0;
in>>n>>k;
srand(n*773);
int v[n];
for (int i = 0; i < n; i++)
in>>v[i];
out<<sdo(v, k - 1, 0, n-1)<<endl;
return 0;
}