Pagini recente » Cod sursa (job #522488) | Cod sursa (job #6485) | Cod sursa (job #2675487) | Cod sursa (job #1105512) | Cod sursa (job #1496503)
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <ctime>
#include <stdio.h>
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()
{
FILE *f,*g;
f = fopen("sdo.in","r");
g = fopen("sdo.out","w");
int n,k,*v;
fscanf(f,"%d%d",&n,&k);
k--;
v = new int[n];
for(int i=0;i<n;++i)
fscanf(f,"%d",&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);
fprintf(g,"%d",v[idx]);
return 0;
}