Cod sursa(job #379298)

Utilizator cvicentiuCiorbaru Vicentiu Marian cvicentiu Data 31 decembrie 2009 16:40:15
Problema Statistici de ordine Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#define MaxN 3000001
FILE *f = fopen("sdo.in","r");
FILE *g = fopen("sdo.out","w");

int n,k;
int v[MaxN];

void swap(int &x, int &y){
	int aux = x;
	x = y;
	y = aux;
};

int sdo(int k, int ex1,int ex2){
	int x = v[ex1];
	int i = ex1, j = ex2;
	while (i < j){
		for (; v[i] <= x && i < j; ++i);
		for (; v[j] > x && i <= j; --j);
		if (i < j) swap(v[i], v[j]);
	};
	v[ex1] = v[j];
	v[j] = x;
	if (j == k)
		return x;
	if (j < k)
		return sdo(k, j+1, ex2);
	return sdo(k, ex1, j-1);

};

int main(){

	fscanf(f,"%d%d",&n,&k);
	for (int i = 1; i <= n ; i++)
		fscanf(f,"%d", &v[i]);
	fprintf(g,"%d",sdo(k, 1, n));

};