Cod sursa(job #1759200)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 18 septembrie 2016 17:10:10
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <algorithm>
#include <string>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stack>
using namespace std;

vector<int> nums;

void qsort(int lf, int rt, int k) {
  int i = lf, j = rt, p = nums[(lf + rt)/2];
  while (i < j) {
    while (nums[i] < p) ++i;
    while (nums[j] > p) --j;
    if (i <= j) {
      swap(nums[i], nums[j]);
      i++;
      --j;
    }
  }
  if (i < rt && k >= i) qsort(i, rt, k);
  if (j > lf && k <= j) qsort(lf, j, k);
}

int main() {
  freopen("sdo.in","r",stdin);
  freopen("sdo.out","w",stdout);

  int n, k;
  scanf("%d %d", &n, &k);
  nums.resize(n + 1);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &nums[i]);
  }

  qsort(1, n, k);

  printf("%d\n", nums[k]);

  return 0;
}