Pagini recente » Cod sursa (job #2929918) | Cod sursa (job #477680) | Cod sursa (job #510090) | Cod sursa (job #564488) | Cod sursa (job #1601397)
#include <cstdio>
#define NMAX 3000010
using namespace std;
int n, A[NMAX], k;
void read();
inline 8int divide (int, int);
void qsort (int, int);
void result ();
int main(){
read();
qsort (0, n-1);
result();
return 0;
}
void read(){
FILE*fin=fopen ("sdo.in", "r");
int i;
fscanf(fin, "%d %d", &n, &k);
for (i=0; i<n; ++i)
fscanf(fin, "%d", &A[i]);
fclose(fin);
return;
}
void result (){
FILE*fout=fopen ("sdo.out", "w");
fprintf(fout, "%d\n", A[k-1]);
fclose(fout);
return;
}
inline int divide (int st, int dr)
{
int pivot=A[st];
while (st<dr){//cat timp mai am macar 2 elemente
while (st<dr && A[dr]>=pivot) --dr;
A[st]=A[dr];
while (st<dr && A[st]<=pivot) ++st;
A[dr]=A[st];
}
A[st]=pivot;
return st;
}
void qsort (int st, int dr){
int poz;
if (st>=dr) return;
poz=divide (st, dr);
if (poz==k-1) return;
if (poz>=k-1)//sortez inapoi
qsort (st, poz-1);
else
qsort (poz+1, dr);
}