Pagini recente » Cod sursa (job #2888076) | Cod sursa (job #1058326) | Cod sursa (job #2888929) | Cod sursa (job #1097354) | Cod sursa (job #2058635)
#include <fstream>
#include <cstdlib>
#include <time.h>
#define Nmax 3000002
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int a[Nmax],n,k;
void Read(int &n,int &k,int a[Nmax])
{
int i;
fin>>n>>k;
for(i=1;i<=n;++i)
fin>>a[i];
}
int Pivotare(int a[Nmax],int s,int d)
{
swap(a[d],a[d-rand()%(d-s+1)]);
int pivot=a[d];
int i=s-1,j;
for(j=s;j<d;++j)
if(a[j]<pivot){++i; swap(a[i],a[j]); }
swap(a[i+1],a[d]);
return i+1;
}
int statistica(int a[Nmax],int s,int d,int k)
{
if(s<d)
{
int pivot=Pivotare(a,s,d);
if(k==pivot)return a[k];
else if(pivot>k)return statistica(a,s,pivot-1,k);
else return statistica(a,pivot+1,d,k);
}
}
int main()
{
Read(n,k,a);
srand(time(0));
fout<<statistica(a,1,n,k);
return 0;
}