Cod sursa(job #2281346)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 12 noiembrie 2018 08:25:12
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include<fstream>
#include<ctime>
#include<cstdlib>
using namespace std;
ifstream cin("sdo.in");
ofstream cout("sdo.out");
int n,k,a[3000005];
void Kth_element(int s,int d){
    if(s>=d) return;
    int pivot=s+rand()%(d-s+1);
    swap(a[pivot],a[d]);
    int j=s;
    for(int i=s;i<d;i++)
        if(a[i]<a[d]){
            swap(a[j],a[i]);
            ++j;
        }
    swap(a[d],a[j]);
    if(k==j) return;
    if(k>j) Kth_element(j+1,d);
    else Kth_element(s,j-1);
}
int main(){
    srand(time(NULL));
    cin>>n>>k;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    Kth_element(1,n);
    cout<<a[k];
}