Cod sursa(job #1009161)

Utilizator donydony2009FMI - Donisan George donydony2009 Data 12 octombrie 2013 16:04:01
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream.h>
using namespace std;
int n,v[3000003],k;
int quicksort(int x,int y)
{
	int cl=x,cr=y,piv=rand()%(y-x)+x,sw;
	while(cr!=cl)
	{
		while(v[cl]<=v[piv]&&cl!=piv)
			cl++;
		while(v[cr]>=v[piv]&&cr!=piv)
			cr--;
		if(cr!=cl)
		{
			sw=v[cr];
			v[cr]=v[cl];
			v[cl]=sw;
			if(cl==piv)
				piv=cr;
			else
				if(cr==piv)
					piv=cl;
		}
	}
	if(piv==k)
		return piv;
	if(x<piv-1&&k<piv)
		return quicksort(x,piv-1);
	if(y>piv+1&&k>piv)
		return quicksort(piv+1,y);	
}
int main(void)
{
	int i;
	ifstream f("sdo.in");
	ofstream g("sdo.out");
	f>>n>>k;
	for(i=1;i<=n;i++)
		f>>v[i];
	g<<quicksort(1,n);
	f.close();
	g.close();
	return 0;
}