Pagini recente » Cod sursa (job #1161153) | Cod sursa (job #1055859) | Cod sursa (job #2649137) | Cod sursa (job #46664) | Cod sursa (job #1237167)
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<algorithm>
using namespace std;
#define Nmax 3000001
ifstream f("sdo.in");
ofstream g("sdo.out");
int A[Nmax], n, k;
int part(int st, int dr) {
int i=st-1, j=dr+1, val, pivot;
pivot=st+rand()%(dr-st+1);
val=A[pivot];
while(1) {
do i++; while(A[i]<val);
do j--; while(A[j]>val);
if(i<j)
swap(A[i],A[j]);
else
return j;
}
}
void rez(int st, int dr) {
if(st<dr) {
int x=part(st,dr);
if(x != k)
{
if(x>k)
rez(st,x);
else
rez(x+1,dr);
}
}
}
int main() {
srand(time(0));
f>>n>>k;
for(int i=1; i<=n; i++)
f>>A[i];
rez(1,n);
g<<A[k];
f.close();
g.close();
return 0;
}