Cod sursa(job #623873)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 20 octombrie 2011 21:15:08
Problema Statistici de ordine Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<fstream>
#include<algorithm>
#define NMAX 3000010

using namespace std;

int a[NMAX], n, k;

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

void Citeste()
{
	int i;
	f>>n>>k;
	for (i=1; i<=n; ++i) f>>a[i];
}

int part(int st, int dr)
{
	int s=st, d=dr, p=a[st];
	
	while(s<=d)
	{
		while (a[s]<=p) ++s;
		while (a[d]>p)  --d;
		if(s<d) swap(a[s], a[d]);
	}	
	swap(a[d], a[st]);
	return d;
}

void Quick(int st, int dr)
{
	int poz;
	poz=part(st, dr);
	if (poz==k) g<<a[k]<<"\n";
	else
		if (k<poz) Quick(1, poz-1);
		else Quick(poz+1, dr);
}

int main()
{
	Citeste();
	Quick(1, n);
	f.close();
	g.close();
	return 0;
}