Cod sursa(job #768921)

Utilizator ion824Ion Ureche ion824 Data 17 iulie 2012 21:40:32
Problema Statistici de ordine Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
#include<string>
using namespace std;
int a[3000005],N,K,sw;
string s;

void quicksort(int lb,int ub){
    int i=lb,j=ub,p=a[(lb+ub)>>1];
          
    do{
       while(a[i]<p)++i; 
       while(a[j]>p)--j;
       if(i<=j){ sw=a[i]; a[i]=a[j]; a[j]=sw; ++i; --j; }
       }while(i<=j); 
       
    if(lb<j)quicksort(lb,j);         
    if(ub>i)
      if(i<=K)quicksort(i,ub);                        
}

int main(void){
    ifstream fin("sdo.in");
    ofstream fout("sdo.out");
    int j,l,i,x;
    fin>>N>>K; getline(fin,s);
    getline(fin,s); l=s.length(); i=j=0; 
    while(j<l){
        x=0;        
        while(s[j]<='9' && s[j]>='0' && j<l)x=(x*10)+(s[j++]-'0');
        a[++i]=x; ++j;     
               }
     
    for(int i=1;i<=N;++i)fin>>a[i];
    quicksort(1,N);
    fout<<a[K]<<'\n';
 return 0;   
}