Cod sursa(job #429104)

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

void swap(int &a, int &b)
{
	int aux=a; a=b; b=aux;
}


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

	if( i > K ) return sdo(s,i-1);
		else    return 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];
			
	g<<sdo(1,n);
	
	f.close();
	g.close();	
	return 0;
}