Cod sursa(job #3294459)

Utilizator filipdanieloanFilip-Daniel Oancea filipdanieloan Data 23 aprilie 2025 19:46:22
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream cin("cautbin.in");
ofstream cout("cautbin.out");

int n;
vector<int> v;
int m;
int intrebare, x;

int main() {
	cin >> n;
	for(int i = 1; i <= n; i ++) {
		int nr; cin >> nr;
		v.push_back(nr);
	}
	cin >> m;
	for(int i = 1; i <= m; i ++) {
		cin >> intrebare >> x;
		if(intrebare == 0) {
			int indice_dr = -1;
			int st = 0, dr = n-1;
			while (st <= dr) {
				int mij = (st+dr)/2;
				if(v[mij] == x) {
					indice_dr = mij;
					st = mij + 1;
				}
				else {
					dr = mij - 1;
				}
			}
			cout << indice_dr+1 << '\n';
		}
		else if (intrebare == 1) {
			int indice_st = -1;
			int st = 0, dr = n-1;
			while (st <= dr) {
				int mij = (st+dr)/2;
				if(v[mij] <= x) {
					indice_st = mij;
					st = mij + 1;
				}
				else {
					dr = mij - 1;
				}
			}
			cout << indice_st+1 << '\n';
		}
		else {
			int indice = -1;
			int st = 0, dr = n-1;
			while (st <= dr) {
				int mij = (st+dr)/2;
				if(v[mij] >= x) {
					indice = mij;
					dr = mij - 1;
				}
				else {
					st = mij + 1;
				}
			}
			cout << indice+1 << '\n';
		}
	}
}