Cod sursa(job #2437141)

Utilizator Leonard123Mirt Leonard Leonard123 Data 8 iulie 2019 17:04:44
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include<cstdlib>
#include<ctime>
#include<fstream>
using namespace std;
#define maxn 3000005
int v[maxn],n,k;
ifstream cin("sdo.in");
ofstream cout("sdo.out");

int quicksort(int inf, int sup){
   int x,aux,i,j;
   i=inf;
   j=sup;
   x=v[inf+(rand()%(sup-inf+1))];
   while(i<=j){
    while(i<sup && v[i]<x) i++;
    while(j>inf && v[j]>x) j--;
    if(i<=j){
        aux=v[i];
        v[i]=v[j];
        v[j]=aux;
        i++; j--;
    }
   }
   return j;
};

void part(int li,int lf,int k){
    if(li==lf)
        return;
    int q=quicksort(li,lf);
    int t=q-li+1;
    if(t>=k)
        part(li,q,k);
    else
        part(q+1,lf,k-t);
}

int main()
{
    srand(time(NULL));
    cin>>n>>k;
    for(int i=1; i<=n; i++)
       cin>>v[i];
    part(1,n,k);
    cout<<v[k];
    return 0;
}