Cod sursa(job #473123)

Utilizator mlazariLazari Mihai mlazari Data 28 iulie 2010 09:05:08
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<stdio.h>

#define NMAX 3000003

int n,k,i,l,r,m,p;
int M[NMAX];

int qsort(int l,int r) {
  p=M[l];
  --l,++r;
  while(r>l) {
    do {
      ++l;
    } while(M[l]<p);
    do {
      --r;
    } while(M[r]>p);
    if(l<r) {
      M[l]^=M[r];
      M[r]^=M[l];
      M[l]^=M[r];
    }
  }
  return r;
}

int main() {
  freopen("sdo.in","r",stdin);
  freopen("sdo.out","w",stdout);
  scanf("%d%d",&n,&k);
  --k;
  for(i=0;i<n;i++) scanf("%d",M+i);
  l=0;
  r=n-1;
  do {
    m=qsort(l,r);
    if(m<k) l=m+1;
    else r=m-1;
  } while(m!=k);
  printf("%d\n",M[m]);
  return 0;
}