Cod sursa(job #2316182)

Utilizator st_marianStoica Marian st_marian Data 11 ianuarie 2019 13:21:05
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>

using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int k;
unsigned int v[4000001];

void select(int a, int b)
{
    if(a<b)
    {
        swap(v[(a+b)/2], v[b]);
        int counter=a;
        for(int i=a; i<b; i++)
            if(v[i]<v[b])   swap(v[counter++], v[i]);
        swap(v[counter], v[b]);
        if(counter==k)  ;
        else if(counter>k)  select(a, counter-1);
        else select(counter+1, b);
    }
}
int main()
{
    int n;
    fin>>n>>k;
    for(int i=1; i<=n; i++) fin>>v[i];
    select(1, n);
    fout<<v[k]<<'\n';

    return 0;
}