Cod sursa(job #3320411)

Utilizator BaraianTudorBaraian Tudor Stefan BaraianTudor Data 5 noiembrie 2025 18:02:12
Problema Cautare binara Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#define mod 666013
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");


int main()
{
	int n, m, a[100005];
	in >> n;
	for (int i = 1; i <= n; i++) {
		in >> a[i];
	}
	in >> m;
	for (int i = 1; i <= m; i++) {
		int x, y;
		in >> x >> y;
		int elem = y;
		if (x < 2) {
			elem += 1;
		}
		int l = 1, r = n;
		while (true) {
			int mij = (r + l) / 2;
			if (a[mij] < elem) {
				l = mij + 1;
			}
			else {
				r = mij;
			}
			if (l == r) {
				break;
			}
		}
		if (x == 0) {
			if (a[l] == y) {
				out << l;
				goto fin;
			}
			if (l > 1 && a[l - 1] == y) {
				out << l - 1;
				goto fin;
			}
			out << -1;
		}
		if (x == 1) {
			if (a[l] == y) {
				out << l;
				goto fin;
			}
			out << l - 1;
		}
		if (x == 2) {
			out << l;
		}
		fin:
		out << '\n';
	}
	return 0;
}