Pagini recente » Cod sursa (job #2826086) | Cod sursa (job #385337) | Cod sursa (job #2327717) | Cod sursa (job #2880704) | Cod sursa (job #1105161)
#include<iostream>
#include<fstream>
#define Nmax 3000001
using namespace std;
long long M[Nmax];
long Position(long p, long u, long pivot) {
int i=p, j=u;
long X = M[pivot];
while(i<j){
if (M[i] == X) {
swap(M[i],M[j]);
}
if (M[i] > X) {
swap(M[i],M[j]);
j--;
} else {
i ++;
}
}
return i;
}
long long QuickSelect(long p, long u, long K) {
long m;
long pivot = rand() % (u - p + 1) + p;
m = Position(p,u,pivot);
if (m > K) {
return QuickSelect(p,m-1,K);
} else if (m < K) {
return QuickSelect(m+1,u,K);
} else {
return M[m];
}
}
int main() {
ifstream f("sdo.in");
ofstream g("sdo.out");
long long N,K;
f>>N;
f>>K;
for(int i = 0; i < N; i++) {
f>>M[i];
}
g<<QuickSelect(0,N-1,K-1);
f.close();
g.close();
return 0;
}