Cod sursa(job #3227478)

Utilizator CalinHanguCalinHangu CalinHangu Data 1 mai 2024 11:37:20
Problema Statistici de ordine Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <vector>
#include <queue>

#define x first
#define y second
#define ll long long
#define pb push_back
#define bg begin()
#define ed end()
#define cl clear()
#define pii pair<int, int>

#define int ll

using namespace std;

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

const int MOD = 123457;
const char nl = '\n';
const int NMAX = 1e5 + 5;
const int INF = 1e9;

int v[NMAX];

int partition(int v[], int l, int r){
    int pivot = v[l];
    int cnt = 0;
    for(int i = l + 1; i <= r; ++i){
        if(v[i] <= pivot)
            cnt++;
    }
    int pos = l + cnt;
    swap(v[pos], v[l]);
    int i = l, j = r;
    while(i < pos && j > pos){
        while(v[i] <= pivot)
            i++;
        while(v[j] > pivot)
            j--;
        if(i < pos && j > pos)
            swap(v[i++], v[j--]);
    }
    return pos;
}

void quicksort(int v[], int l, int r){
    if(l >= r)
        return;
    int p = partition(v, l ,r);
    quicksort(v, l, p - 1);
    quicksort(v, p + 1, r);
}

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