Cod sursa(job #1281808)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 3 decembrie 2014 19:18:01
Problema Statistici de ordine Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <time.h>
#include <stdlib.h>

using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int v[3000002],i,n,k;
int part(int p,int u){
    int x=p+rand()%(u-p);
    int aux=v[x];v[x]=v[p];v[p]=aux;
    int i=p,j=u;
    int ii=0,jj=-1;
    while(i!=j){
        if(v[i]>v[j]){
            swap(v[i],v[j]);
            swap(ii,jj);
            ii*=-1;
            jj*=-1;
        }
        i+=ii;
        j+=jj;
    }
    return i;
}
void kmin(int p,int u){
    int x=part(p,u);
    if(x==k){
        fout<<v[x];
        return;
    }
    if(x<k)
        kmin(x+1,u);
    else
        kmin(p,x-1);

}
int main(){
    //srand(time(0));
    fin>>n>>k;
    for(i=1;i<=n;i++)
        fin>>v[i];
    kmin(1,n);
    fin.close();fout.close();
    return 0;
}