Pagini recente » Cod sursa (job #730555) | Cod sursa (job #2623120) | Cod sursa (job #3134265) | Cod sursa (job #1397492) | Cod sursa (job #1252553)
#include <iostream>
#include <cstdlib>
#include<ctime>
#include<fstream>
using namespace std;
int v[3000004], n, k;
void citeste()
{
int i;
ifstream f("sdo.in");
f>>n>>k;
for (i=1;i<=n;++i) f>>v[i];
f.close();
}
int pivot(int st, int dr)
{
int i=st, j=dr, aux;
aux=st + 1 + rand() %(dr-st);
int p=v[aux];
while (i<=j)
{while (v[i]<p) i++;
while (v[j]>p) j--;
if (i<=j) {aux=v[i]; v[i]=v[j];v[j]=aux; i++; j--;}
}
return j;
}
void select(int st, int dr, int ind)
{
if (st!=dr)
{
int m, p;
p=pivot(st, dr);
m=p-st+1;
if (m>=ind) select(st, p, ind);
else select(p+1, dr, ind-m);
}
}
int main()
{
citeste();
srand(time(NULL));
select(1, n, k);
ofstream g("sdo.out");
g<<v[k]<<'\n';
g.close();
}