Pagini recente » Monitorul de evaluare | Cod sursa (job #1148307) | Cod sursa (job #339825) | Cod sursa (job #283123) | Cod sursa (job #972238)
Cod sursa(job #972238)
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
#define NMax 50000
int N;
long long int M[NMax];
#define INF 100000000000000000LL
#define Min(a, b) ((a) < (b) ? (a) : (b))
int best[NMax/10][NMax/10];
void sortare(int li, int ls)
{
if (li < ls)
{
int m = (li + ls) / 2;
sortare(li, m);
sortare(m+1, ls);
int k=0, v[NMax], i = li, j = m+1;
while (i <= m && j <= ls)
{
if (M[i] < M[j])
v[++k] = M[i++];
else
v[++k] = M[j++];
}
while (i <= m)
{
v[++k] = M[i++];
}
while (j <= ls)
{
v[++k] = M[j++];
}
for (int i = li; i <= ls; i++)
M[i] = v[i-li + 1];
}
}
int main()
{
FILE *f = fopen("sdo.in", "r");
FILE *g = fopen("sdo.out", "w");
int k;
fscanf(f, "%d %d", &N, &k);
for (int i=1; i<=N; i++)
fscanf(f, "%lld", &M[i]);
sortare(1, N);
fprintf(g, "%lld", M[k]);
fclose(f);
fclose(g);
return 0;
}