Pagini recente » Cod sursa (job #769383) | Cod sursa (job #936042) | Cod sursa (job #544458) | Cod sursa (job #2587492) | Cod sursa (job #612674)
Cod sursa(job #612674)
#include<stdio.h>
#include<fstream>
#include<time.h>
#include<stdlib.h>
using namespace std;
#define MaxN 3000001
int A[MaxN];
int N,K;
void citire(void)
{
ifstream f ("sdo.in");
f >> N >> K;
for(int i=1;i<=N;i++)
f >> A[i];
}
int part(int li,int ls)
{
int a = rand()%N+1;
int c = A[a];
A[a] = A[li];
A[li] = c;
int i=li,j=ls,i1 = 1,j1 = 0;
for(;i < j;i += i1,j += j1)
if(A[i] > A[j])
{
c = A[i];
A[i] = A[j];
A[j] = c;
c = -i1;
i1 = -j1;
j1 = c;
}
return j;
}
int SDO(int li,int ls,int i)
{
int k;
k = part(li,ls);
if(i == k)
return A[k];
if(i <= k)
return SDO(li, k-1, i);
else
return SDO(k,ls,i);
}
int main()
{
FILE *g = fopen("sdo.out","w");
citire();
srand(time(NULL));
fprintf(g,"%d ",SDO(1,N,K));
fclose(g);
return 0;
}