Cod sursa(job #1419739)

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