Cod sursa(job #2947644)

Utilizator cezarTriscaVicolCezar Trisca Vicol 2 cezarTriscaVicol Data 26 noiembrie 2022 15:24:29
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int find_k(int* a, int N, int k){
    if(N==1)
        return a[0];
    int pivot = a[N/2];
    int i=0, j=N-1;
    while(i<=j){
        while(a[i] < pivot) i++;
        while(a[j] > pivot) j--;
        if(i<=j){
            if(i<j)
                swap(a[i], a[j]);
            i++;j--;
        }
    }
    if(k <= j)
        return find_k(a, j+1, k);
    if(j < k && k < i)
        return a[k];
    if(i <= k)
        return find_k(a+i, N-i, k-i);
}

int main()
{
    int n,k;
    f>>n>>k;
    int a[n];
    for(int i=0;i<n;i++)
        f>>a[i];
    g<<find_k(a, n, k-1);
    return 0;
}