Pagini recente » Cod sursa (job #885319) | Cod sursa (job #1922955) | Cod sursa (job #684007) | Cod sursa (job #685000) | Cod sursa (job #643977)
Cod sursa(job #643977)
//Statistici de ordine
#include<fstream>
#include<cstdlib>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int N, K;
int a1[3000001];
int a2[3000001];
int sort_inter(int *a1, int *a2, int st, int dr)
{ int i, j;
int ps, pd;
if(st == dr) return a1[st];
int pivot = rand() % (dr - st + 1) + st;
ps = st; pd = dr;
for(i = st; i <= dr; i++)
{ if(i == pivot) i++;
if(i > dr) break;
if(a1[i] <= a1[pivot])
a2[ps] = a1[i] , ps++;
else a2[pd] = a1[i], pd--;
}
a2[ps] = a1[pivot];
pivot = ps;
if(K == pivot)
return a2[pivot];
if(K < pivot)
return sort_inter(a2, a1, st, ps - 1);
else return sort_inter(a2, a1, ps + 1, dr);
}
int main()
{ int i;
f>>N>>K;
for(i = 1; i <= N; i++)
f>>a1[i];
g<<sort_inter(a1, a2, 1, N);
f.close();
g.close();
return 0;
}