Cod sursa(job #1949351)

Utilizator vlcmodanModan Valentin vlcmodan Data 1 aprilie 2017 22:42:00
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<vector>
#include<algorithm>
#include<stdio.h>

using namespace std;

int n, m;
int a[10000];

int ordine(int x)
{
	int number = 0;
	int gasit = 0;

	for (int i = 0; i < n; i++)
	{
		if (a[i] < x)
			number++;

		if (a[i] == x)
			gasit++;
		if (number > m)
			return 1;
	}
	if (number <m && number+gasit>=m&&gasit>0)
		return 0;
	
	return -1;

}
int bin_s(int first, int last)
{


	int middle = (first + last) / 2;

	int mid = ordine(middle);

	if (mid == 0)
		return middle;
	if (mid == -1)
	{
		return bin_s(middle + 1, last);
	}
	else
			return bin_s(first, middle - 1);



}
int main()
{
	freopen("sdo.in", "r", stdin);
	freopen("sdo.out", "w", stdout);

	scanf("%d %d",&n, &m);

	for (int i = 0; i < n; i++)
	{
		int x;
		scanf("%d", &a[i]);
	}
	
	printf("%d",bin_s(1, 3000000));
}