Cod sursa(job #1082848)

Utilizator danny794Dan Danaila danny794 Data 14 ianuarie 2014 23:10:03
Problema Statistici de ordine Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <cstdlib>

typedef long long ll;

using namespace std;

const int NMAX = 3000005;
int N, K;
int v[NMAX];

void read() {
	freopen( "sdo.in", "r", stdin );
	freopen( "sdo.out", "w", stdout );
	scanf("%i %i", &N, &K);
	for ( int i = 1; i <= N; i++ )
		scanf("%i", &v[i]);
}

void quicksort(int b, int e) {
	if ( b < e ) {
		int x = v[e];
		int i = b - 1;
		while( v[i + 1] <= x && i < e)
			i++;
		for(int j = i + 1; j <= e; j++)
			if( v[j] <=  x ) {
				i++;
				v[i] ^= v[j];
				v[j] ^= v[i];
				v[i] ^= v[j];
			}
		if (i == K)
			return;
		if (K < i)
			quicksort(b, i - 1);
		else
			quicksort(i + 1, e);
	}
}

int main() {
	read();
	quicksort(1, N);
	printf("%i\n",v[K]);
	return 0;
}