Cod sursa(job #2746734)

Utilizator MateGMGozner Mate MateGM Data 28 aprilie 2021 13:12:13
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

#define nmax 3000005

int a[nmax],n,m;

int oszt(int b,int j)
{
    int i=b-1;
    int k=j+1;
    int random = b+rand()%(j-b+1);
    int t=a[random];
    while(1)
    {
        do{
            i++;
        }while(a[i]<t);
        do{
            k--;
        }while(a[k]>t);
        if(i<k)
            swap(a[i],a[k]);
        else return k;
    }
    return 0;

}


void quick(int b,int j,int m)
{
    if(b==j)
        return;
    int koz=oszt(b,j);
    int t=koz-b+1;
    if(t>=m)
        quick(b,koz,m);
    else
        quick(koz+1,j,m-t);

}



int main()
{
    srand(time(NULL));
    ifstream be("sdo.in");
    ofstream ki("sdo.out");
    be>>n>>m;
    for(int i=1;i<=n;i++)
        be>>a[i];
    quick(1,n,m);
    ki<<a[m]<<endl;
    return 0;
}