Cod sursa(job #2942869)

Utilizator andiRTanasescu Andrei-Rares andiR Data 20 noiembrie 2022 11:29:18
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>

#define Nmax 3000000
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
int K,N;
unsigned int v[Nmax];

int Quick_Select(unsigned int arr[], int in, int sf, int k)
{
    unsigned int Pivot=arr[sf];
    int elem=in-1;
    ///Partionare
    int aux;
    for (int i=in;i<sf;i++)
    {
        if (arr[i]<=Pivot)
        {
            elem++;
            ///swap
            aux=arr[i];
            arr[i]=arr[elem];
            arr[elem]=aux;
        }
    }
    aux=arr[elem+1];
    arr[elem+1]=arr[sf];
    arr[sf]=aux;

    elem++;
    if (k==elem)
        return Pivot;
    else if (k<elem)
        return Quick_Select(arr,in,elem-1,k);
    else
        return Quick_Select(arr,elem+1,sf,k);
}
int main()
{
    fin>>N>>K;
    K--;
    for (int i=0;i<N;i++)
        fin>>v[i];
    fout<<Quick_Select(v,0,N-1,K);
    return 0;
}