Cod sursa(job #2277138)

Utilizator dianamichesaRosu Diana Michesa dianamichesa Data 5 noiembrie 2018 20:16:51
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
const int N = 3000001;
int n, v[N], k;
int partitie (int v[], int st, int dr) {
    int pivot = v[dr];
    int i = st;
    for(int j = st; j < dr; j ++) {
        if(v[j] < pivot) {
            i ++;
            swap (v[i], v[j]);
        }
    }
    swap (v[i], v[dr]);
    return i;
}
void sdo (int v[], int st, int dr, int k) {
    if(st >= dr)
        return;
    int part = partitie (v, st, dr);
    int x = part - st + 1;
    if(x >= k)
        sdo (v, st, part, k);
    else
        sdo (v, part + 1, dr, k - x);
}
void afisare (int v[]) {
    for(int i = 1; i <= n; i ++)
        g << v[i] << ' ';
}
int main()
{
    f >> n >> k;
    for(int i = 1; i <= n; i ++)
        f >> v[i];
    sdo (v, 1, n, k);
    g << v[k];
    return 0;
}