Cod sursa(job #831170)

Utilizator UMihneaUngureanu Mihnea UMihnea Data 8 decembrie 2012 11:15:00
Problema Statistici de ordine Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <cstdio>

using namespace std;
int n,k,i,L,R,st,dr,mi,v,aux,X[3000001];
int main()
{

   freopen("sdo.in","r",stdin);
   freopen("sdo.out","w",stdout);
   scanf("%d%d",&n,&k);
   for(i=1;i<=n;i++)scanf("%d",&X[i]);
   L=1;R=n;
   while(L<R)
   {
       st=L; dr=R; mi=(st+dr)/2;
       v=X[mi];
       while(st<dr)
       {
           while(X[st]<v)st++;
           while(X[dr]>v)dr--;
           if(st<dr){aux = X[st]; X[st] = X[dr]; X[dr]=aux; st++; dr--;}
       }
       if(k<=dr)R=dr;
       else L=st;
   }
   printf("%d",X[k]);
    return 0;
}