Cod sursa(job #2835448)

Utilizator hhhhhhhAndrei Boaca hhhhhhh Data 18 ianuarie 2022 19:05:33
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
mt19937 rng(time(NULL));
int n,k,v[3000005];
int quickselect(int l,int r,int k)
{
    if(l==r)
        return v[l];
    int lg=r-l+1;
    int p=v[(l+r)/2];
    int b=l,e=r;
    while(b<=r&&v[b]<p)
        b++;
    while(e>=l&&v[e]>p)
        e--;
    while(b<e)
    {
        swap(v[b],v[e]);
        //b++;
        while(b<=r&&v[b]<p)
            b++;
        //e--;
        while(e>=l&&v[e]>p)
            e--;
    }
    if(k<=b)
        return quickselect(l,b,k);
    else
        return quickselect(b+1,r,k);
}
int main()
{
    fin>>n>>k;
    for(int i=1;i<=n;i++)
        fin>>v[i];
    fout<<quickselect(1,n,k);
    return 0;
}