Cod sursa(job #3347727)

Utilizator mrvalentynTime Limit Exceeded mrvalentyn Data 18 martie 2026 02:02:18
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
/*
    author: qvalentin
    
    dumnezeu sa o ierte...
    
    chr(69) + chr(88) + chr(88)
*/
#include <bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define ll long long
#define pb push_back
#define MOD 1000000007
#define fastio ios_base::sync_with_stdio(0); cin.tie(nullptr);
int di[4]={0,0,-1,1};
int dj[4]={-1,1,0,0};

string FILENAME="sdo";
ifstream f(FILENAME+".in");
ofstream g(FILENAME+".out");


int a[3000001];


int partition(int a[], int l, int r){
    int x=a[r];
    int i=l-1;
    for(int j=l;j<=r-1;++j){
        if(a[j]<=x){
            i++;
            swap(a[i],a[j]);
        }
    }
    swap(a[i+1],a[r]);
    return i+1;

}
int randomized_partition(int a[], int l, int r){
    srand(time(0));
    int piv=l + rand() % (r-l+1);
    swap(a[r],a[piv]);
    return partition(a,l,r);
}
int quickselect(int a[], int l, int r, int i){
    if(l==r)return a[l];
    //pivot
    int q=randomized_partition(a,l,r);
    
    int k=q-l+1;
    if(i==k)return a[q];
    else if(i<k)return quickselect(a,l,q-1,i);
    else return quickselect(a,q+1,r,i-k);
}

int main(){
    #define cin f
    #define cout g
    
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;++i)cin>>a[i];
    cout<<quickselect(a,1,n,k);
    return 0;
}