Cod sursa(job #1086986)

Utilizator impulseBagu Alexandru impulse Data 18 ianuarie 2014 19:38:50
Problema Statistici de ordine Scor 90
Compilator c Status done
Runda Arhiva educationala Marime 0.94 kb
//
//  main.c
//  quickSortLomuto
//
//  Created by Alexandru Bâgu on 1/18/14.
//  Copyright (c) 2014 Alexandru Bâgu. All rights reserved.
//

#include <stdio.h>
int swap(int *a, int *b)
{
    int aux = *a;
    *a = *b;
    *b = aux;
    return 0;
}

int qsort(int *v, int left, int right, int nth)
{
    if(left >= right) return 0;
    int piv = v[right], px = left - 1, py = left;
    while(py <= right)
        if(v[py++] <= piv)
            swap(v + py - 1, v + ++px);
    //if(px >= right) px--;
    
    if(nth <= px)
        qsort(v, left, px - 1, nth);
    else
        qsort(v, px + 1, right, nth);
    return 0;
}

int main(int argc, const char * argv[])
{
    freopen("sdo.in", "r", stdin);
    freopen("sdo.out", "w", stdout);
    int n, i, q;
    scanf("%d %d", &n, &q);
    int *v = (int*)malloc(n * sizeof(int));
    for(i = 0; i < n; i++)
        scanf("%d", v + i);
    qsort(v, 0, n - 1, q - 1);
    printf("%d ", v[q - 1]);
    return 0;
}