Cod sursa(job #2653060)

Utilizator raikadoCri Lu raikado Data 26 septembrie 2020 19:12:59
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int main(int argc, char const *argv[])
{
	ifstream fin("cautbin.in");
	ofstream fout("cautbin.out");

	int N; fin >> N;
	vector<int> arr(N);
	for (int i = 0; i < N; i++) {
		fin >> arr[i];
	}

	int M; fin >> M;
	for (int i = 0; i < M; ++i) {
		int q, x;
		fin >> q >> x;

		vector<int>::iterator it;
		switch (q) {
		case 0:
			it = upper_bound(arr.begin(), arr.end(), x);
			if (it == arr.begin())
				fout << -1;
			else {
				it--;
				if (*it == x)
					fout << it - arr.begin() + 1;
				else
					fout << -1;
			}
			break;

		case 1:
			it = upper_bound(arr.begin(), arr.end(), x) - 1;
			fout << it - arr.begin() + 1;
			break;

		case 2:
			it = lower_bound(arr.begin(), arr.end(), x);
			fout << it - arr.begin() + 1;
			break;
		} 

		fout << '\n';
	}

	return 0;
}