Cod sursa(job #2142152)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 24 februarie 2018 19:44:26
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
#include<time.h>
#include<stdlib.h>
#define Nmax 3000010
using namespace std;
int v[Nmax],K,i,n;
 
void sdo ( int s, int d )
{
    int i=s,j=d,di=0,dj=1,aux;
    int p =  i + rand() % (j-i+1) ;
    //int p = v [ ((i+j)>>1)+1 ]; 
    aux=v[i]; v[i]=v[p]; v[p]=aux;
    while(i<j)
    {
        if(v[i]>v[j])
        {
            aux=v[i]; v[i]=v[j]; v[j]=aux;
            aux=di; di=dj; dj=aux;
        }
        i+=di;
        j-=dj;
    }
         
    if( i == K ) return ;
 
    if( i > K )  sdo(s,i-1);
        else     sdo(i+1,d);
}   
 
int main()
{
    srand(time(0));
     
    ifstream f("sdo.in");
    ofstream g("sdo.out");
     
    f>>n>>K;
     
    for(i=1;i<=n;i++)
        f>>v[i];
             
    sdo(1,n);
    g<<v[K];
     
    f.close();
    g.close();  
    return 0;
}