Cod sursa(job #2611771)

Utilizator smitoiStefan Mitoi smitoi Data 7 mai 2020 16:20:44
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <vector>
#include <bits/stdc++.h>
#include <algorithm>

using namespace std;
	
ifstream	f("sdo.in");
ofstream	g("sdo.out");

int k, n, LO[3000001], EQ[3000001], HI[3000001];

int quickselect(int v[], int len, int k)
{
    long int pivot = len - 1;
    int lo = 0, eq = 0, hi = 0;

    for (int i = 0; i < len; i++) 
	{
        if (v[i] < v[pivot])
		{
            LO[lo] = v[i];
			lo++;
		}
        else if(v[i] == v[pivot])
		{
            EQ[eq] = v[i];
			eq++;
		}
        else
		{
            HI[hi] = v[i];
			hi++;
		}
    } 
	
    if (k <= lo)
        quickselect(LO, lo, k);
    else if (k <= lo + eq)
        return EQ[0];
    else
		quickselect(HI, hi, k - (lo + eq));
}

int main()
{
	f >> n >> k;
	
    for(int i = 0; i < n; i++)
        f >> EQ[i];
	
    g << quickselect(EQ, n, k) << '\n';
}