Cod sursa(job #936660)

Utilizator forgetHow Si Yu forget Data 8 aprilie 2013 08:04:04
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
using namespace std;

int main() {
	ifstream fin("cautbin.in");
	ofstream fout("cautbin.out");
	int n;
	fin >> n;
	int a[n];
	for (int i = 0; i < n; ++i)
		fin >> a[i];
	int nquery;
	fin >> nquery;
	int q, x, l, r, m;
	for (; nquery > 0; --nquery) {
		fin >> q >> x;
		if (q <= 1) {
			for (l = 0, r = n-1; l < r; ) {
				m = (l+r)/2+1;
				if (a[m] <= x) l = m;
				else r = m-1;
			}
			if (q == 0 && a[l] != x) fout << -1;
			else fout << l+1;
		}
		else {
			for (l = 0, r = n-1; l < r; ) {
				m = (l+r)/2;
				if (a[m] < x) l = m+1;
				else r = m;
			}
			fout << l+1;
		}
		fout << '\n';
	}
	return 0;
}