Cod sursa(job #1815267)

Utilizator gorneanu.andreiFMI Gorneanu Andrei gorneanu.andrei Data 24 noiembrie 2016 23:24:46
Problema Statistici de ordine Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.91 kb
#include <stdio.h>
#include <time.h>
#define MAX 500005
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 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;
}