Pagini recente » Cod sursa (job #641220) | Cod sursa (job #42358) | Cod sursa (job #2124625) | Cod sursa (job #2984212) | Cod sursa (job #1419739)
#include <stdio.h>
#include <algorithm>
long int n,k, v[3000001];
FILE *f=fopen("sdo.in","r");
FILE *g=fopen("sdo.out","w");
long int partiton(long int l, long int r, long int k){
long int i=l, j=r, x=v[(l+r)/2];
while (i<j){
while (v[i]<x)i++;
while (v[j]>x)j--;
if(i<=j){
std::swap(v[i],v[j]);
i++; j--;
}
}
if(l<=k&&k<j) return partiton(l,j,k);
if (i<=k&& k<=r) return partiton(i,r,k);
return v[k];
}
int main(){
long int i;
fscanf(f,"%ld%ld",&n,&k);
for(i=1;i<=n;i++){
fscanf(f,"%ld",&v[i]);
}
fprintf(g,"%ld\n",partiton(1,n,k));
return 0;
}