Cod sursa(job #3261302)

Utilizator Stefanstef99Stefan Puica Stefanstef99 Data 5 decembrie 2024 12:49:01
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
using namespace std;

/**
12
10 4 18 19 2 15 1 77 6 7 20 12
*/
ifstream fin("statisticiordine.in");
ofstream fout("statisticiordine.out");
int a[3000002];
int n, k;

void Citire()
{
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
        fin >> a[i];
}

int Pivot(int st, int dr)
{
    int i, k, pivot;
    swap(a[st], a[(st + dr) / 2]);
    pivot = a[st];
    k = st;
    for (i = st + 1; i <= dr; i++)
        if (a[i] <= pivot)
        {
            k++;
            swap(a[k], a[i]);
        }
    swap(a[st], a[k]);
    return k;
}
/// Numar de operatii cel mult 2*n
int SDO(int st, int dr)
{
    int p = Pivot(st, dr);
    if (p == k) return a[p];
    if (p < k) return SDO(p + 1, dr);
    return SDO(st, p - 1);
}

int main()
{
    Citire();
    fout << SDO(1, n);
    return 0;
}