Pagini recente » Cod sursa (job #1062133) | Cod sursa (job #991586) | Cod sursa (job #651254) | Cod sursa (job #996355) | Cod sursa (job #2619531)
#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;
}