Cod sursa(job #1074222)

Utilizator impulseBagu Alexandru impulse Data 7 ianuarie 2014 13:05:58
Problema Statistici de ordine Scor 20
Compilator c Status done
Runda Arhiva educationala Marime 0.93 kb
//
//  main.c
//  statdeordine
//
//  Created by Alexandru Bâgu on 1/7/14.
//  Copyright (c) 2014 Alexandru Bâgu. All rights reserved.
//

#include <stdio.h>

int swap(int*a, int*b)
{
    int k = *a;
    *a = *b;
    *b = k;
    return 0;
}

int qsort(int *v, int st, int dr)
{
    if(st >= dr) return 0;
    int a = st, b = dr, w = 0;
    while(a <= b)
    {
        if(v[a] <= v[b])
        {
            if(w) a++;
            else b--;
        }
        else
        {
            swap(v + a, v + b);
            w ^= 1;
        }
    }
    qsort(v, st, a - 1);
    qsort(v, a + 1, dr);
    return 0;
}

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