Pagini recente » Cod sursa (job #1791076) | Cod sursa (job #335784) | Cod sursa (job #1002935) | Cod sursa (job #2025720) | Cod sursa (job #1035743)
#include<fstream>
#include<ctime>
#include<cstdlib>
#define numaru 3000000
using namespace std;
int v[numaru+1],n,k;
void schimba(int &a,int &b)
{
a=(a+b)-(b=a);
}
int F(int i,int j)
{
int x,poz,copie_i,copie_j;
while(true)
{
if(i==j)return v[i];
copie_i=i; copie_j=j;
poz=rand()%(j-i)+i+1;
x=v[poz];
while(i<j)
{
while(v[i]<x)++i;
while(x<v[j])--j;
if(i<j) schimba(v[i],v[j]);
}
if(k==j)return v[j];
else if(k>j) { i=j+1;j=copie_j;}
else { i=copie_i; j=j-1; }
}
}
int main()
{
srand(time(0));
ifstream f("sdo.in");
ofstream g("sdo.out");
int i,r;
f>>n>>k;
for(i=1;i<=n;++i)
f>>v[i];
r=F(1,n);
g<<r<<"\n";
f.close();
g.close();
return 0;
}