Cod sursa(job #2749111)

Utilizator smoc_georgemarianSmoc George-Marian smoc_georgemarian Data 4 mai 2021 23:09:23
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <bits/stdc++.h>
#define int long long int
#define NMAX 3000009
#define cin fin
#define cout fout
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n,k;
int v[NMAX];
int partitionez(int st, int dr)
{
    int i,j;
    int aux;
    //int el_rand= st+ rand()% (dr-st);
    //swap( v[el_rand], v[st]);
    aux= v[st];
    i=st+1;
    j=dr;
    while(i<=j)
    {
        if( v[i]<=aux)
        i++;
        if(v[j]>=aux)
        j--;
        if(i<j && v[i]>=aux && v[j]<=aux)
        {
            swap(v[i],v[j]);
            i++;
            j--;
        }
    }
    int where=i-1;
    v[st]=v[where];
    v[where]=aux;
    
    return where;

}
void quicksort( int * v, int st, int dr)
{
    if(st==dr) return;
      
    int poz= partitionez(st,dr);
    if(   poz- st+1>=k)
        quicksort(v,st,poz);
        else
        quicksort(v,poz+1,dr );

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