Cod sursa(job #2838283)

Utilizator BalasaRaduBalasa Radu BalasaRadu Data 23 ianuarie 2022 12:34:18
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
using namespace std;

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

const int dim=3000009;

int v[dim];

int QuickSelect(int l,int r,int k){
    if(l==r){
        return v[k];
    }
    int m=(l+r)/2;
    swap(v[m],v[l]);
    int lp=l,rp=r;
    bool d=0;
    while(lp<rp){
        if(v[lp]>v[rp]){
            swap(v[lp],v[rp]);
            d=!d;
        }
        if(!d){
            rp--;
        }
        else{
            lp++;
        }
    }
    if(k<=lp){
        return QuickSelect(l,lp,k);
    }
    else{
        return QuickSelect(lp+1,r,k);
    }
}

signed main(){
    int n,k;
        fin>>n>>k;
    for(int i=1;i<=n;i++){
        fin>>v[i];
    }
        fout<<QuickSelect(1,n,k);
}