Cod sursa(job #2983599)

Utilizator alex_dacDumitrascu Constantin Alexandru alex_dac Data 22 februarie 2023 17:12:14
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include<bits/stdc++.h>

using namespace std;

ifstream in("sdo.in");
ofstream out("sdo.out");

const int NMAX=3e6;

int_fast64_t vec[NMAX];
int n,k;

void citire(){
    in>>n>>k;
    for(int i=0;i<n;++i)
        in>>vec[i];
}

void qs(int begin,int end){
    //partition part
    int pivot=vec[begin+rand()%(end-begin=1)];
    int b=begin,e=end;
    do{
        do
        b++;
        while(vec[b]<pivot);

        do
        e--;
        while(vec[e]>pivot);

        if(b<e)
            swap(vec[b],vec[e]);
    }while(b<e);
    //partition part

    //recall part
    if(begin<e and k<=e)
        qs(begin,e);
    else if(e+1<end)
        qs(e+1,end);
    //recall part
}

int main(){
    citire();
    qs(0,n-1);
    out<<vec[k];
}