Pagini recente » Cod sursa (job #2465802) | Cod sursa (job #1217155) | Cod sursa (job #937892) | Cod sursa (job #2543724) | Cod sursa (job #654824)
Cod sursa(job #654824)
/*
* File: Statisticideordine.cpp
* Author: slycer
*
* Created on December 30, 2011, 10:35 PM
*/
#include <cstdlib>
#include <fstream>
using namespace std;
void swap( int *,int,int);
/*
*
*/
int main(int argc, char** argv) {
ifstream input("sdo.in");
ofstream output("sdo.out");
int n,k;
input >> n >> k;
int *data = new int[n];
for ( int i=0; i<n; i++){
int c;
input >> c;
data[i] = c;
}
k--;
int left=0;
int right=n-1;
int m;
while ( true ){
m = (right+left)/2;
swap(data,left,m);
m=left;
for ( int j=left+1; j<=right; j++ ){
if ( data[left]>data[j] /*|| ( data[left]==data[j] && rand()%2==0 )*/ ){
m++;
swap(data,m,j);
}
}
swap(data,left,m);
// m = left;
if ( m == k ){
break;
}
if ( k < m ){
right = m-1;
} else {
left = m+1;
}
}
output << data[m];
return 0;
}
void swap( int *data, int i, int j){
int aux = data[i];
data[i] = data[j];
data[j] = aux;
}