Cod sursa(job #2326879)

Utilizator gabiluciuLuciu Gabriel gabiluciu Data 24 ianuarie 2019 10:30:52
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <cstdio>
#include <time.h>
#include <queue>
#include <cmath>
#include <stack>
#include <fstream>
//#include <iostream>
#include <bitset>
#include <set>

using namespace std;
#define nl '\n'
#define all(v) v.begin(),v.end()
#define eb(x) emplace_back(x)
#define ull unsigned long long
#define N 3000000
ifstream cin("sdo.in");
ofstream cout("sdo.out");

template<class a, class type>
void print(a v, type t) {
    for_each(all(v), [](type x) { cout << x << ' '; });
    cout << nl;
}

int n, k;
int v[N + 1];

void sortQuick(int left, int right) {
    if (left <= right) {
        int mid = (left + right) >> 1;
        int i = left, j = right;
        int p = v[mid];
        while (i <= j) {
            while (v[i] < p) ++i;
            while (v[j] > p) --j;
            if (i <= j) {
                swap(v[i], v[j]);
                ++i, --j;
            }
        }
        if (k <= j) {
            sortQuick(left, j);
        } else
            sortQuick(i, right);
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    clock_t tStart = clock();
    cin >> n >> k;
    for (int i = 1; i <= n; ++i) {
        cin >> v[i];
    }
    sortQuick(1, n);
    cout << v[k] << nl;
    printf("\nTime taken: %.2fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC);
}