Pagini recente » Cod sursa (job #1019121) | Cod sursa (job #1764404) | Cod sursa (job #1155676) | Cod sursa (job #2583264) | Cod sursa (job #473202)
Cod sursa(job #473202)
#include<fstream>
#include<ctime>
#include<cstdlib>
using namespace std;
#define NMAX 3000003
int n,k,i,l,r,m,p,d;
int M[NMAX];
ifstream fi("sdo.in");
ofstream fo("sdo.out");
int qsort(int l,int r) {
d=0;
p=l+rand()%(r-l+1);
if(p!=l) {
M[l]^=M[p];
M[p]^=M[l];
M[l]^=M[p];
}
while(l<r) {
if(M[l]>M[r]) {
M[l]^=M[r];
M[r]^=M[l];
M[l]^=M[r];
d=1-d;
}
if(d)
do l++; while(M[l]<M[r]);
else
do r--; while(M[l]<M[r]);
}
return l;
}
int main() {
fi>>n>>k;
--k;
for(i=0;i<n;i++) fi>>M[i];
l=0;
r=n-1;
srand(time(NULL));
do {
m=qsort(l,r);
if(m<k) l=m+1;
else r=m-1;
} while(m!=k);
fo<<M[m]<<"\n";
return 0;
}