Pagini recente » Cod sursa (job #258523) | Cod sursa (job #1533611) | Cod sursa (job #2345463) | Cod sursa (job #762381) | Cod sursa (job #2669913)
#include <iostream>
#include <iostream>
#include <algorithm>
#include <stdio.h>
#define NMAX 3000000
using namespace std;
int v[NMAX + 1];
int k;
FILE *fin, *fout;
int getnr() {
int nr;
char ch;
ch = fgetc( fin );
while (!(ch >= '0' && ch <= '9'))
ch = fgetc( fin );
nr = 0;
while (ch >= '0' && ch <= '9') {
nr = nr * 10 + ch - '0';
ch = fgetc( fin );
}
}
int f(int begin, int end) {
int piv, b, e;
b = begin; e = end; piv = v[(b + e) / 2];
while (v[b] < piv) b++;
while (v[e] > piv) e--;
while (b < e) {
swap(v[b], v[e]);
do b++; while (v[b] < piv);
do e--; while (v[e] > piv);
}
if (begin < e && k <= e)
f(begin, e);
else if (e + 1 < end)
f(e + 1, end);
}
int main() {
int n, i;
fin = fopen("sdo.in", "r");
fscanf(fin, "%d%d", &n, &k);
for (i = 0; i < n; i++)
fscanf(fin, "%d", &v[i]);
fclose( fin );
k--;
f(0, n - 1);
fout = fopen("sdo.out", "w");
fprintf(fout, "%d", v[k]);
fclose( fout );
return 0;
}