Cod sursa(job #1817026)

Utilizator d0rina2011Craciun Dorina d0rina2011 Data 27 noiembrie 2016 11:59:29
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <algorithm>
#define MAX 3000002
int v[MAX], k;

int quicksort(int st,int dr){

    int i = st, j = dr, pivot, aux;
    //srand(time(NULL));
    pivot = v[rand()%(dr - st + 1) + st];

    do{
        while(v[i] < pivot && i <= dr)
            ++i;
        while(v[j] > pivot && j >= st)
            --j;

        if(i <= j){
            aux = v[i];
            v[i] = v[j];
            v[j] = aux;
            ++i;
            --j;
        }
    }while(i <= j);



    if(k == j)
        return v[j];
    else
    if(k < j)
        return quicksort(st,j);
    else
        return quicksort(i,dr);
}

int main(){

    int n, i, x;
    FILE *f, *g;
    f = fopen("sdo.in","r");
    g = fopen("sdo.out","w");
    fscanf(f,"%d %d",&n,&k);

    for(i = 1;i <= n; ++i)
        fscanf(f,"%d",&v[i]);

    x = quicksort(1,n);
    fprintf(g,"%d",x);

    return 0;
}