Cod sursa(job #1787949)

Utilizator penetavyPene Cosmin-Octavian penetavy Data 25 octombrie 2016 12:23:00
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <cstdlib>
#include <ctime>

using namespace std;

FILE *fin = fopen("sdo.in", "r");
FILE *fout = fopen("sdo.out", "w");

int n, k, sol;
int v[3000001];
int ver = 1;

void quicksort(int st, int dr){
    int aux, i = st, j = dr, p;
    p = st + rand()%(dr - st + 1);
    int pivot = v[p];
    while(i <= j){
        while(v[i] < pivot)
            i++;
        while(v[j] > pivot)
            j--;
        if(i <= j){
            aux = v[i];
            v[i] = v[j];
            v[j] = aux;
            i++;
            j--;
        }
    }
    if(st < j && j >= k)
        quicksort(st, j);
    if(i < dr && j < k)
        quicksort(i, dr);
}

int main(){
    int i, j;

    srand(time(0));

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

    quicksort(1, n);

    fprintf(fout, "%d", v[k]);

    fclose(fin);
    fclose(fout);
    return 0;
}