Cod sursa(job #2623272)

Utilizator SahisttulArsene Marinel Sahisttul Data 2 iunie 2020 21:15:00
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");

int v[3000001], n, k;


int pivot(int p, int u)
{
    int cp = 0, cu = -1;
    while(p < u)
    {
        if(v[p] > v[u])
        {
            int aux = v[p];
            v[p] = v[u];
            v[u] = aux;
            //
            aux = cp;
            cp = -cu;
            cu = -aux;
        }
        p += cp;
        u += cu;
    }
    return p; //pozitia pivotului
}

void quicksort(int p, int u, int k)
{
    if(p < u)
    {
        int piv = pivot(p, u);
        if(k <= piv)
            quicksort(p, piv - 1, k);
        else
            quicksort(piv + 1, u, k);
    }
}

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


/**
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");

const int NMAX = 3000001;

int v[NMAX], n, k;

int main()
{
    f >> n >> k;
    for(int i = 1; i <= n; i++)
        f >> v[i];
    nth_element(v + 1, v + k, v + n + 1);
    g << v[k];
    return 0;
}
*/