Cod sursa(job #3153680)

Utilizator BOSSSTEFANPetrescu Ioan Stefan BOSSSTEFAN Data 30 septembrie 2023 17:14:00
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <ctime>
using namespace std;
ifstream cin("sdo.in");
ofstream cout("sdo.out");
int v[3000001];
int part(int v[], int st, int dr)
{
    int i,j,mij=v[st+rand()%(dr-st+1)];
    for(i=st-1,j=dr+1;;)
    {
        i++;
        j--;
        while(v[i]<mij)
            i++;
        while(v[j]>mij)
            j--;
        if(i>=j)
            return j;
        swap(v[i],v[j]);
    }
}
void qsort(int st, int dr, int k)
{
    if(st<dr)
    {
        int p=part(v,st,dr);
        if(p>=k)
            qsort(st,p,k);
        else
            qsort(p+1,dr,k);
    }
}
int main()
{
    srand(time(0));
    int n,i,k;
    cin>>n>>k;
    for(i=1;i<=n;i++)
        cin>>v[i];
    qsort(1,n,k);
    cout<<v[k];
    return 0;
}