Cod sursa(job #2183434)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 23 martie 2018 10:12:36
Problema Statistici de ordine Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <cstdio>
#include <stdlib.h>
#include <ctime>
#include <iostream>

using namespace std;
int v[3000001];
int poz (int st,int dr){
    int ds=0,dd=-1,aux;
    while (st!=dr){
        if (v[st]>v[dr]){
            aux=v[st];
            v[st]=v[dr];
            v[dr]=aux;
            aux=ds;
            ds=-dd;
            dd=-aux;
        }
        st+=ds;
        dr+=dd;
    }
    return st;
}
void sorteaza (int st,int dr){
    if (st<dr){
        int p=poz(st,dr);
        sorteaza (st,p-1);
        sorteaza (p+1,dr);
    }
}
int main()
{
    FILE *fin=fopen ("sdo.in","r");
    FILE *fout=fopen ("sdo.out","w");
    int n,k,i,p;
    fscanf (fin,"%d%d",&n,&k);
    for (i=1;i<=n;i++)
        fscanf (fin,"%d",&v[i]);
    srand (time(0));
    for (i=n;i>=2;i--){
        p=1+((long long)rand()*rand())%(i-1);
        swap(v[i],v[p]);
    }
    sorteaza (1,n);
    fprintf (fout,"%d",v[k]);
    return 0;
}