Cod sursa(job #1348779)

Utilizator ralucabugi00Raluca ralucabugi00 Data 19 februarie 2015 20:57:45
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<fstream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int n, k, i, p, aux, x;
int v[3000001];
void poz(int st, int dr, int k){
    if(st <= dr){
        int ii = 0, jj = -1, i = st, j = dr, aux;
        int x = rand() % (dr - st + 1) + st;
        aux = v[i];
        v[i] = v[x];
        v[x] = aux;
        while(i < j){
            if(v[j] < v[i]){
                aux = v[i];
                v[i] = v[j];
                v[j] = aux;
                aux = ii;
                ii = -jj;
                jj = -aux;
            }
            i += ii;
            j += jj;
        }
        if(i == k){
            p = k;
        }
        else{
            if(i < k){
                poz(i + 1, dr, k);
            }
            else{
                poz(st, i - 1, k);
            }
        }
    }
}
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int main(){
    srand(time(0));
    fin>> n >> k;
    for(i = 1; i <= n; i++){
        fin>> v[i];
    }
    poz(1, n, k);
    fout<< v[p];
    return 0;
}