Pagini recente » Cod sursa (job #303149) | Cod sursa (job #1451709) | Cod sursa (job #3325959) | Cod sursa (job #1069075) | Cod sursa (job #3326420)
//https://infoarena.ro/problema/sdo
//#pragma GCC optimize("O3")
//#pragma GCC optimize("Ofast")
//#pragma GCC optimize("fast-math")
//#pragma GCC optimize("unroll-loops")
//#pragma GCC optimize("inline")
//#define _USE_MATH_DEFINES
//#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <fstream>
//#include <vector>
//#include <cstring>
//#include <cmath>
//#include <bitset>
//#include <queue>
//#include <stack>
//#include <utility>
#include <algorithm>
//#include <string>
//#include <map>
//#include <unordered_map>
//#include <set>
//#include <unordered_set>
//#include <cstdint>
//#include <climits>
//#include <iomanip>
//#include <cstdio>
//#include <tuple>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
const int NRMAX = 3000000;
int v[NRMAX];
void quicksort_k(int st, int dr, int k)
{
int piv = v[st + rand() % (dr - st + 1)];
int i, j;
for (i = st; v[i] < piv; ++i);
for (j = dr; v[j] > piv; --j);
while (i < j)
{
swap(v[i], v[j]);
++i; for (; v[i] < piv; ++i);
--j; for (; v[j] > piv; --j);
}
if (st < j && k <= j)
quicksort_k(st, j, k);
if (j + 1 < dr)
quicksort_k(j + 1, dr, k);
}
int main()
{
//ios_base::sync_with_stdio(false);
//cin.tie(nullptr);
//cout.tie(nullptr);
int n, k, i;
fin >> n >> k;
for (i = 0; i < n; ++i)
fin >> v[i];
quicksort_k(0, n - 1, k);
/*for (i = 0; i < n; ++i)
cout << v[i] << " ";*/
fout << v[k - 1] << "\n";
return 0;
}