Cod sursa(job #430226)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 30 martie 2010 20:40:08
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<time.h>
#include<stdlib.h>
#define Nmax 3000010
using namespace std;
int v[Nmax],K,i,n;

void sdo ( int s, int d )
{
	int i=s,j=d,di=0,dj=1,aux;
	int p =  i + rand() % (j-i+1) ;
	//int p = v [ ((i+j)>>1)+1 ];	
	aux=v[i]; v[i]=v[p]; v[p]=aux;
	while(i<j)
	{
		if(v[i]>v[j])
		{
			aux=v[i]; v[i]=v[j]; v[j]=aux;
			aux=di; di=dj; dj=aux;
		}
		i+=di;
		j-=dj;
	}
		
	if( i == K ) return ;

	if( i > K )  sdo(s,i-1);
		else     sdo(i+1,d);
}	

int main()
{
	srand(time(0));
	
	ifstream f("sdo.in");
	ofstream g("sdo.out");
	
	f>>n>>K;
	
	for(i=1;i<=n;i++)
		f>>v[i];
			
	sdo(1,n);
	g<<v[K];
	
	f.close();
	g.close();	
	return 0;
}