Pagini recente » Cod sursa (job #2298765) | Cod sursa (job #2740973) | Cod sursa (job #1457869) | Cod sursa (job #1040345) | Cod sursa (job #1246602)
#include<fstream>
#include <cstdlib>
#include <ctime>
const int Max=3000001;
int n,a[Max],k;
using namespace std;
void citire()
{
int i;
ifstream fin("sdo.in");
fin>>n>>k;
for(i=1;i<=n;i++)
fin>>a[i];
fin.close();
}
int sdo(int st, int dr, int k)
{
if(st==dr) return a[st];
int poz = st + ( rand() % (dr-st+1));
int i,j,pivot;
pivot=a[poz];
i=st;
j=dr;
while(i<=j)
{
while(a[i]< pivot)
++i;
while(a[j]>pivot)
--j;
if(i<=j)
{
swap(a[i],a[j]);
++i;
--j;
}
}
if(j-st+1 >= k) return sdo(st,j,k);
else return sdo(j+1, dr, k - j + st-1);
}
void afisare()
{
ofstream fout("sdo.out");
fout<<sdo(1,n,k)<<"\n";
fout.close();
}
int main()
{
srand(time(NULL));
citire();
afisare();
return 0;
}