Pagini recente » Cod sursa (job #1931109) | Cod sursa (job #165818) | Cod sursa (job #2421072) | Cod sursa (job #2164224) | Cod sursa (job #612671)
Cod sursa(job #612671)
#include<stdio.h>
#define MaxN 3000001
int A[MaxN];
int N,K;
void citire(void)
{
FILE *f = fopen("sdo.in","r");
fscanf(f,"%d %d",&N,&K);
for(int i=1;i<=N;i++)
fscanf(f,"%d ",&A[i]);
fclose(f);
}
int part(int li,int ls)
{
int c = A[(li+ls)/2];
A[(li+ls)/2] = 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();
fprintf(g,"%d ",SDO(1,N,K));
fclose(g);
return 0;
}