Cod sursa(job #1419926)

Utilizator Alex1199Alex Bercea Alex1199 Data 17 aprilie 2015 07:05:35
Problema Statistici de ordine Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <stdio.h>
#include <algorithm>
FILE *f=fopen("sdo.in","r");
FILE *g=fopen("sdo.out","w");
long int a[3000001];
long int part(long int l, long int r, long int k){
 long int i=l;
 long int j=r;
 long int x=a[(l+r)/2];
  while(i<j){
    while (a[i]<x)i++;
    while (a[j]>x)j--;
    if(i<=j){
        std::swap(a[i],a[j]);
        i++; j--;
    }
  }
 if(k>=l&&k<=j)return part(l,j,k);
 if(i<=k &&k<=r)return part(i,r,k);
 return a[k];
}
int main(){
 long int n, k;
 fscanf(f,"%ld%ld",&n,&k);
 for(long int i=1;i<=n;i++){
    fscanf(f,"%ld",&a[i]);
 }
fprintf(g,"%ld",part(1,n,k));
    return 0;
}