Cod sursa(job #1347662)

Utilizator robx12lnLinca Robert robx12ln Data 19 februarie 2015 08:59:41
Problema Statistici de ordine Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<cstdio>
#include<stdlib.h>
#include<time.h>
using namespace std;
/*
ifstream fin("sdo.in");
ofstream fout("sdo.out");
*/
FILE * fin=fopen("sdo.in","r");
FILE * fout=fopen("sdo.out","w");
int aux,v[3000005],i,n,k;
int poz(int st,int dr){
    if(st<=dr){
        int i=st, j=dr, ii=0, jj=-1;
        int x=rand()%(dr-st)+st;
        aux=v[st];
        v[st]=v[k];
        v[k]=aux;
        while(i<j){
            if(v[i]>v[j]){
                aux=v[i];
                v[i]=v[j];
                v[j]=aux;
                aux=ii;
                ii=-jj;
                jj=-aux;
            }
            i+=ii;
            j+=jj;
        }
        if(i==k){
            return i;
        }else{
            if(k<i){
                poz(st,i);
            }else{
                poz(i+1,dr);
            }
        }
    }
}
int main(){
    srand(time(0));
    //fin>>n>>k;
    fscanf(fin,"%d%d",&n,&k);
    for(i=1;i<=n;i++){
        //fin>>v[i];
        fscanf(fin,"%d",&v[i]);
    }
    fprintf(fout,"%d",v[poz(1,n)]);
    return 0;
}