Cod sursa(job #2564799)

Utilizator alexsandulescuSandulescu Alexandru alexsandulescu Data 2 martie 2020 10:28:23
Problema Statistici de ordine Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <bits/stdc++.h>

using namespace std;


int N, K, a[3000003];

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


void QSort(int st, int dr);

int partitionare(int st, int dr);

int main() {

   f >> N >> K;
   for(int i = 1; i <= N; i++) {
      f >> a[i];
   }

   QSort(1, N);

   g << a[K] << "\n";
   return 0;
}

void QSort(int st, int dr) {
   int poz = partitionare(st, dr);
   if(poz - st > 1)
      QSort(st, poz - 1);
   if(dr - poz > 1)
      QSort(poz + 1, dr);
}

int partitionare(int st, int dr) {
   int j = st - 1, p = a[dr];
   for(int i = st; i <= dr; i++) {
      if(p >= a[i]) swap(a[++j], a[i]);
   }
   return j;
}