Cod sursa(job #1281882)

Utilizator AndyCatrunaCatruna Andy AndyCatruna Data 3 decembrie 2014 20:17:43
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <stdlib.h>
#include <time.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int v[3000005],n,i,k;
int poz (int p , int u){
    int i=p, j=u, ii=0, jj=-1 , aux;
    int x = p+rand()%(u-p+1);
    aux=v[x];v[x]=v[p];v[p]=aux;
    while(i!=j){
        if(v[i]>v[j]){
            swap(v[i],v[j]);
            swap(ii,jj);
            ii*=-1;
            jj*=-1;
        }
        i+=ii; j+=jj;
    }
    return i;
}
void sorteaza(int p, int u){
    int m=poz(p,u);
    if(m==k){
        fout<<v[k];
        return;
    }
    if(m>k){
        sorteaza(p,m-1);
    }
    else{
        sorteaza(m+1,u);
    }

}
int main(){
    srand(time(0));
    fin>>n>>k;
    for(i=1;i<=n;i++){
        fin>>v[i];
    }
    sorteaza(1,n);



    return 0;
}