Cod sursa(job #1470511)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 11 august 2015 16:26:14
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<iostream>
#include<fstream>
#define inf (1 << 32)-1

using namespace std;

unsigned v[100005], n;

int a(int x) {
	int lo, hi, mid;
	lo = 0;
	hi = n + 1;
	while (hi - lo > 1) {
		mid = (hi + lo) / 2;
		if (v[mid] > x)
			hi = mid;
		else
			lo = mid;
	}
	return lo;
}

int b(int x) {
	int lo, hi, mid;
	lo = 0;
	hi = n + 1;
	while (hi - lo > 1) {
		mid = (hi + lo) / 2;
		if (v[mid] >= x)
			hi = mid;
		else
			lo = mid;
	}
	return hi;
}

int main() {
	ifstream f("cautbin.in");
	ofstream g("cautbin.out");

	int m, i, x, y;
	f >> n;
	v[0] = 0;
	v[n + 1] = inf;
	for (i = 1; i <= n; ++i)
		f >> v[i];
	f >> m;
	for (i = 0; i < m; ++i) {
		f >> x >> y;
		if (x == 0) {
			x = a(y);
			if (v[x] == y)
				g << x << "\n";
			else
				g << "-1\n";
		}
		else if (x == 1) {
			g << a(y) << "\n";
		}
		else {
			g<< b(y) << "\n";
		}
	}
	return 0;
}