Cod sursa(job #3175084)

Utilizator Warrior.exeZgorcea Mihai-Alexandru Warrior.exe Data 25 noiembrie 2023 12:33:46
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;


// am dat copy paste pentru a putea intelege mai bine quicksort*



void qsort(int v[], int begin, int end) {
  int pivot = v[begin + rand() % (end - begin + 1)]; // alegem pivotul aleator
  int b = begin, e = end;
  while (v[b] < pivot) // cauta primul element mai mare sau egal cu pivotul
    b++;

  while (v[e] > pivot) // cauta primul element mai mic sau egal cu pivotul
    e--;

  while(b < e) {      // daca indicii nu s-au atins
    swap(v[b], v[e]); // interschimba pozitiile

    do                // cauta primul element mai mare sau egal cu pivotul
      b++;
    while (v[b] < pivot);

    do                // cauta primul element mai mic sau egal cu pivotul
      e--;
    while (v[e] > pivot);
  }

  // acum [begin..e] sunt mai mici sau egale cu pivotul
  if (begin < e)
    qsort(v, begin, e);
  // si [e+1..end] sunt mai mari sau egale cu pivotul
  if (e + 1 < end)
    qsort(v, e + 1, end);
}
int main(){
ifstream cin("sdo.in");
ofstream cout("sdo.out");
int nr,cat;
cin>>nr>>cat;
int sir[nr];
for(int i=0;i<nr;i++){
    cin>>sir[i];
}
qsort(sir,0,nr-1);
cout<<sir[cat-1];

return 0;
}