Mai intai trebuie sa te autentifici.
Cod sursa(job #1095642)
Utilizator | Data | 31 ianuarie 2014 16:56:12 | |
---|---|---|---|
Problema | Statistici de ordine | Scor | 60 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 1.25 kb |
#include <fstream>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
int n, k, v[3000001], aux[3000001];
/*void qsort(int v[], int st, int dr)
{
int i = st, j = dr;
int tmp;
int pivot = v[(st + dr) / 2];
while (i <= j) {
while (v[i] < pivot)
i++;
while (v[j] > pivot)
j--;
if (i <= j) {
tmp = v[i];
v[i] = v[j];
v[j] = tmp;
i++;
j--;
}
}
if (st < j)
qsort(v, st, j);
if (i < dr)
qsort(v, i, dr);
}*/
void merge(int st, int dr) {
int m=(st+dr)/2, i, j, k;
i = k = st;
j = m+1;
while (i<=m && j<=dr) {
if (v[i] <= v[j])
aux[k++] = v[i++];
else
aux[k++] = v[j++];
}
while (i<=m)
aux[k++] = v[i++];
while (j<=dr)
aux[k++] = v[j++];
for (k=st; k<=dr; k++)
v[k] = aux[k];
}
void ms(int st, int dr) {
if (st == dr) return;
int m = (st+dr)/2;
ms(st, m);
ms(m+1, dr);
merge(st,dr);
}
int main()
{
in >> n >> k;
for (int i=1; i<=n; i++)
in >> v[i];
ms(1,n);
out << v[k];
return 0;
}