Pagini recente » Cod sursa (job #2285646) | Cod sursa (job #241669) | Cod sursa (job #1534313) | Cod sursa (job #1906643) | Cod sursa (job #658930)
Cod sursa(job #658930)
#include <iostream>
#include <fstream>
#include<cstdlib>
#define MAXN 3000002
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int a[MAXN],n,k;
void change(int i,int j)
{
int aux=a[i];
a[i]=a[j];
a[j]=aux;
}
int part(int s,int d)
{
int i=s-1,j=d+1,val=a[s +rand()%(d-s+1)];
while(1)
{
do i++;
while(a[i]<val);
do j--;
while(a[j]>val);
if(i<j)
change(i,j);
else
return j;
}
}
void quick(int s,int d,int k)
{
if(s==d) return;
int m=part(s,d);
int x;
x=m-s+1;
if(x>=k) quick(s,m,k);
else quick(m+1,d,k-x);
}
int main()
{
f>>n>>k;
for(int i=1;i<=n;i++)
f>>a[i];
quick(1,n,k);
g<<a[k]<<"\n";
return 0;
}