Cod sursa(job #1345784)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 17 februarie 2015 21:10:40
Problema Statistici de ordine Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>
#include<time.h>
#include<stdlib.h>
using namespace std;
int n, k, i, p, aux, x;
int v[3000001];
void poz(int st, int dr, int k){
	if(st < dr){
		int ii = 0, jj = -1, i = st, j = dr, aux;
		int x = rand() % (dr - st) + st;
		aux = v[i];
		v[i] = v[x];
		v[x] = aux;
		while(i < j){
			if(v[j] < v[i]){
				aux = v[i];
				v[i] = v[j];
				v[j] = aux;
				aux = ii;
				ii = -jj;
				jj = -aux;
			}
			i += ii;
			j += jj;
		}
		if(i == k){
			p = k;
		}
		else{
			if(i < k){
				poz(i + 1, dr, k);
			}
			else{
				poz(st, i - 1, k);
			}
		}
	}
}
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int main(){
	srand(time(0));
	fin>> n >> k;
	for(i = 1; i <= n; i++){
		fin>> v[i];
	}
	poz(1, n, k);
	fout<< v[p];
	return 0;
}