Pagini recente » Cod sursa (job #583718) | Cod sursa (job #1460430) | Cod sursa (job #1763723) | Cod sursa (job #1103484) | Cod sursa (job #1496502)
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <ctime>
using namespace std;
int partitionQuick(int v[],int left,int right)
{
int i = left;
int j = right;
srand(time(0));
int pivot = rand() % (right - left + 1 ) + left;
cout<<pivot<<" ";
swap(v[i],v[pivot]);
pivot = v[i];
i++;
while(i<=j)
{
while(v[i]<pivot) i++;
while(v[j]>pivot) j--;
if(i<j)
swap(v[i++],v[j--]);
}
swap(v[left],v[j]);
return j;
}
int main()
{
ifstream f("sdo.in");
ofstream g("sdo.out");
int n,k,*v;
f>>n>>k;
k--;
v = new int[n];
for(int i=0;i<n;++i)
f>>v[i];
if(n==0) return 0;
int idx,left = 0,right = n-1;
do
{
idx = partitionQuick(v,left,right);
if(idx<k)
left = idx+1;
else
right = idx - 1;
}while(idx!=k);
g<<v[idx];
return 0;
}