Cod sursa(job #1893537)

Utilizator mihai.alphamihai craciun mihai.alpha Data 25 februarie 2017 19:14:45
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#include <ctime>
#include <cstdlib>
#include <algorithm>

using namespace std;

#define MAX 3000000

int n, k;
int v[MAX + 1];

void quick(int st, int dr)  {
    int i = st, j = dr, pivo = st + rand() % (dr - st + 1);
    int piv = v[pivo];
    while(i <= j)  {
        while(v[i] < piv)
            i++;
        while(v[j] > piv)
            j--;
        if(i <= j)
            swap(v[i], v[j]), i++, j--;
    }
    if(st < j && j >= k)
        quick(st, j);
    else if(i < dr && j < k)
        quick(i, dr);
}

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

int main()  {
    fscanf(fin, "%d%d", &n, &k);
    for(int i = 1;i <= n;i++)
        fscanf(fin, "%d", &v[i]);
    quick(1, n);
    fprintf(fout, "%d", v[k]);
    fclose(fin), fclose(fout);
    return 0;
}