Cod sursa(job #1756805)

Utilizator theodor.moroianuTheodor Moroianu theodor.moroianu Data 13 septembrie 2016 17:46:29
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>
using namespace std;

int v[100010], n;

int cbin(int x)
{
	int p = 0, q = (1 << 20);
	while (q > 0) {
		if (p + q <= n && v[p + q] <= x)
			p += q;
		q /= 2;
	}
	return p;
}

int main()
{
	ifstream in("cautbin.in");
	in >> n;
	for (int i = 1; i <= n; i++)
		in >> v[i];
	ofstream out("cautbin.out");

	int op, c, m;
	in >> m;
	while (m--) {
		in >> op >> c;
		if (op == 0) {
			int p = cbin(c);
			out << (v[p] == c ? p : -1) << '\n';
		}
		else if (op == 1)
			out << cbin(c) << '\n';
		else
			out << 1 + cbin(c - 1) << '\n';
	}
	return 0;
}