Cod sursa(job #1019337)

Utilizator Robert29FMI Tilica Robert Robert29 Data 30 octombrie 2013 22:44:07
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<stdio.h>
#include<cstdlib>
using namespace std;
FILE*f=fopen("sdo.in","r");
FILE*g=fopen("sdo.out","w");
int n,k,v[3000001];
int pivoteaza(int st,int dr)
{
	int piv=st+rand()%(dr-st+1);
	int i=st;
	int j=dr;
	while(1)
	{
		while(v[i]<v[piv])
			++i;
		while(v[j]>v[piv])
			--j;
		if(i<j)
		{
			int aux=v[i];
			v[i]=v[j];
			v[j]=aux;
		}
		else
			return j;
	}
}
void cauta(int st,int dr)
{
	if(st<dr)
	{
		int piv=pivoteaza(st,dr);
		if(piv>=k)
			cauta(st,piv);
		else
			cauta(piv+1,dr);
		
	}
}
int main()
{
	fscanf(f,"%d%d",&n,&k);
	for(int i=1;i<=n;++i)
		fscanf(f,"%d",&v[i]);
	
	cauta(1,n);
	
	fprintf(g,"%d",v[k]);
	
	
	fclose(f);
	fclose(g);
	return 0;
}