Pagini recente » Cod sursa (job #1238106) | Cod sursa (job #2273105) | Cod sursa (job #1254697) | Cod sursa (job #3135529) | Cod sursa (job #1787955)
#include <stdio.h>
#include <cstdlib>
#include <ctime>
#include <ctype.h>
using namespace std;
FILE *fin = fopen("sdo.in", "r");
FILE *fout = fopen("sdo.out", "w");
#define BUF_SIZE 4096
char buf[BUF_SIZE];
int pos = BUF_SIZE;
inline char getChar(FILE *f) {
if (pos == BUF_SIZE) {
fread(buf, 1, BUF_SIZE, f);
pos = 0;
}
return buf[pos++];
}
inline int read(FILE *f) {
int result = 0;
char c;
do {
c = getChar(f);
} while (!isdigit(c));
do {
result = 10 * result + c - '0';
c = getChar(f);
} while (isdigit(c));
return result;
}
int n, k, sol;
int v[3000001];
int ver = 1;
void quicksort(int st, int dr){
int aux, i = st, j = dr, p;
p = st + rand()%(dr - st + 1);
int pivot = v[p];
while(i <= j){
while(v[i] < pivot)
i++;
while(v[j] > pivot)
j--;
if(i <= j){
aux = v[i];
v[i] = v[j];
v[j] = aux;
i++;
j--;
}
}
if(st < j && j >= k)
quicksort(st, j);
else if(i < dr && j < k)
quicksort(i, dr);
}
int main(){
int i, j;
srand(time(0));
n = read(fin);
k = read(fin);
for(i = 1; i <= n; i++)
v[i] = read(fin);
// fscanf(fin, "%d %d", &n, &k);
// for(i = 1; i <= n; i++)
// fscanf(fin, "%d", &v[i]);
quicksort(1, n);
fprintf(fout, "%d", v[k]);
fclose(fin);
fclose(fout);
return 0;
}