Cod sursa(job #1462183)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 17 iulie 2015 12:33:08
Problema Statistici de ordine Scor 50
Compilator c Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 1000000
int v[MAXN],k;
void mynthelement(int begin,int end){
    int b=begin,e=end,aux,pivot=v[b+rand()%(e-b+1)];
    while(b<=e){
        while(v[b]<pivot) b++;
        while(v[e]>pivot) e--;
        if(b<=e){
            aux=v[b];
            v[b]=v[e];
            v[e]=aux;
            b++;e--;
        }
    }
    if(begin<e&&k<=e)
        mynthelement(begin,e);
    if(b<end&&k>=b)
        mynthelement(b,end);
}
int main(){
    FILE*fi,*fout;
    int n,i;
    fi=fopen("sdo.in" ,"r");
    fout=fopen("sdo.out" ,"w");
    fscanf(fi,"%d%d" ,&n,&k);
    k--;
    for(i=0;i<n;i++)
       fscanf(fi,"%d" ,&v[i]);
    mynthelement(0,n-1);
    fprintf(fout,"%d" ,v[k]);
    fclose(fi);
    fclose(fout);
    return 0;
}