Cod sursa(job #1019439)

Utilizator Emanuel9Dumitru Emanuel Cristian Emanuel9 Data 31 octombrie 2013 08:27:09
Problema Statistici de ordine Scor 30
Compilator c Status done
Runda Arhiva educationala Marime 0.95 kb
#include "stdio.h"
#include "stdlib.h"

int v[3000000],n,poz;

int qs(int s,int d)
{
    if(s<d){
        int aux;
        int i=s;
        int j=d;
        int  pivot = v[(s+d)/2];

        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(poz<j){
            qs(s,j);
            return v[poz-1];
        }else{
            qs(i,d);
            return v[poz-1];
        }
    }
}
int main()
{
    freopen("sdo.in", "r", stdin);
    freopen("sdo.out", "w", stdout);

    scanf("%d%d", &n,&poz);
    int i;
    for (i=0; i<n; i++){
        scanf("%d", &v[i]);
    }
    printf("%d",qs(0, n-1));
    fclose(stdin);
    fclose(stdout);
    return 0;
}