Cod sursa(job #472968)

Utilizator mlazariLazari Mihai mlazari Data 27 iulie 2010 13:24:46
Problema Statistici de ordine Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<stdio.h>

#define NMAX 3000003

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

int qsort(int l,int r) {
  d=0;
  while(r!=l) {
    if(M[l]>M[r]) {
      aux=M[l];
      M[l]=M[r];
      M[r]=aux;
      d=1-d;
    }
    if(d) r--;
    else l++;
  }
  return l;
}

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;
}