Cod sursa(job #2306589)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 22 decembrie 2018 16:40:53
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include<fstream>
#include<ctime>
using namespace std;
#define M 3000001
ifstream f("sdo.in");
ofstream g("sdo.out");
int a[M],n,k,i;
int P(int a[],int b,int c)
{
	int i=b-1,j=c+1,p=a[b+(rand()%(c-b+1))];
	while(1)
	{
		for(i++;a[i]<p;i++);
		do
		{
			--j;
		} while(p<a[j]);
		if(i<j)
			swap(a[i],a[j]);
		else
			return j;
	}
	return 0;
}
void S(int a[],int i,int j,int k)
{
	if(i==j)
		return;
	int q=P(a,i,j),t=q-i+1;
	t>=k?S(a,i,q,k):S(a,q+1,j,k-t);
}
int main()
{
	for(srand(time(NULL)),f>>n>>k,i=1;i<=n;i++)
		f>>a[i];
	S(a,1,n,k),g<<a[k];
}