Cod sursa(job #2619531)

Utilizator ADRIAN.CATRINOIUAdrian Catrinoiu ADRIAN.CATRINOIU Data 27 mai 2020 21:30:45
Problema Statistici de ordine Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");

int partitie(int a[], int st, int dr) {
   int pivot, index, i;
   index = st;
   pivot = dr;
   for(i=st; i < dr; i++) {
      // finding index of pivot.
      if(a[i] < a[pivot]) {
         swap(a[i], a[index]);
         index++;
      }
   }
   swap(a[pivot], a[index]);
   return index;
}
int pivotRandom(int a[], int st, int dr){
   // alegem un pivot random
   int pvt, n;
   n = rand();
   pvt = st + n%(dr-st+1); // randomizam pivotul cu ajutorul st,dr
   swap(a[dr], a[pvt]);
   return partitie(a, st, dr);
}
void quick_sort(int arr[], int p, int q) {

   int pindex;
   if(p < q) {
      pindex = pivotRandom(arr, p, q); //alegem pivotul random
    quick_sort(arr, p, pindex-1);
    quick_sort(arr, pindex+1, q);
}
}
int main()
{
    int v[3000005];
    int n,k;
    fin>>n>>k;
    for(int i=0;i<n;i++)
    {
        fin>>v[i];
    }
    quick_sort(v,0,n-1);
    fout<<v[k-1];
    return 0;
}