Cod sursa(job #1438135)

Utilizator o_micBianca Costin o_mic Data 19 mai 2015 01:09:30
Problema Statistici de ordine Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <ctime>
#include <iomanip>
#define UI unsigned int
#define DN 3000005

using namespace std;

UI v[DN];

int main(){
	UI n, x;
	int pos, left, right, st;
	ifstream fin("sdo.in");
	ofstream fout("sdo.out");
	fin >> n >> st;
	--st;
	for(int i = 0; i < n; ++i){
		fin >> v[i];
	}
	left = 0, right = n;
	do {
		srand(time(NULL));
		pos = left + rand() % (right-left);
		for(int i = left; i < right; ++i){
			if(v[i] < v[pos] && i > pos){
				swap(v[pos], v[pos + 1]);
				swap(v[pos], v[i]);
				++pos;
			}
			else if (v[i] > v[pos] && i < pos){
				swap(v[i], v[pos]);
				pos = i;
			}
		}
		if(pos <= st)
			left = pos + 1;
		else
			right = pos;
	} while(pos != st);
	fout << v[pos];
	return 0;
}