Pagini recente » Cod sursa (job #2575053) | Istoria paginii runda/pregonix | Cod sursa (job #1120421) | Cod sursa (job #1855781) | Cod sursa (job #1789996)
#include<fstream>
#include<cstdlib>
#include<ctime>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n, k, v[3000005];
int poz( int st, int dr ){
int i = 0;
int j = -1;
while( st < dr ){
if( v[st] > v[dr] ){
swap( v[st], v[dr] );
int aux = i;
i = -j;
j = -aux;
}
st += i;
dr += j;
}
return st;
}
int sdo( int st, int dr ){
if( st < dr ){
int p = poz( st, dr );
if( p == k ){
return p;
}else{
if( k < p ){
sdo( st, p );
}else{
sdo( p + 1, dr );
}
}
}
}
int main( int argc, const char *argv[] ){
ios::sync_with_stdio( false );
fin >> n >> k;
for( int i = 1; i <= n; i++ ){
fin >> v[i];
}
srand( time(0) );
for( int i = n; i >= 2; i-- ){
int p = rand() % (i - 1) + 1;
swap( v[p], v[1] );
}
int p = sdo(1,n);
fout << v[p];
return 0;
}