Cod sursa(job #634099)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 15 noiembrie 2011 17:31:11
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
#include <ctime>
#include <cstdlib>

using namespace std;

ifstream in("sdo.in");
ofstream out("sdo.out");

const int N=3000100;

int n,k,v[N];

void citire(){
	int i;
	in>>n>>k;
	for(i=1;i<=n;i++){
		in>>v[i];
	}
}

void Partition(int st,int dr){
	int i=st,j=dr+1,pivot=(st+dr)/2;
	swap(v[st],v[pivot]);
	pivot=v[st];
	while(i<j){
		do
			++i;
		while(v[i]<pivot);
		do
			--j;
		while(v[j]>pivot);
		if(j>i)
			swap(v[i],v[j]);
	}
    swap(v[j],v[st]);
	if(j==k){
		out<<v[j];
		return;
	}
	if(k<j)
		Partition(st,j-1);
	else{
		Partition(j+1,dr);
	}
}

int main(){
	srand(time(NULL));
	citire();
	Partition(1,n);
	return 0;
}