Cod sursa(job #2618829)

Utilizator ADINAIOANA-BORTAAdina Borta ADINAIOANA-BORTA Data 26 mai 2020 13:21:34
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.29 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

int f1(int val, vector<int> & v) {
	int mid, l=0, r=v.size();

	while (l < r) {
		mid = (l + r) / 2;
		if (v[mid] <= val)
			l = mid + 1;
		else
			r = mid - 1;
	}
	mid = (l + r) / 2;

	if (v[mid] == val)
		return mid + 1;
	return -1;
}
int f2(int val, vector<int>& v) {
	int mid, r = v.size(), l=0;

	while (l < r) {
		mid = (l + r) / 2;
		if (v[mid] <= val)
			l = mid + 1;
		else
			r = mid;
	}

	mid = (r + l) / 2;
	if (v[mid] > val)
		mid--;
	return mid;
}
int f3(int val, vector<int>& v) {
	int mid, r = v.size(), l = 0;

	while (l < r) {
		mid = (l + r) / 2;
		if (v[mid] <= val)
			l = mid + 1;
		else
			r = mid;
	}

	mid = (r + l) / 2;
	if (v[mid] < val)
		mid++;
	return mid;
}


int main()
{
    ifstream in("cautbin.in");
    ofstream out("cautbin.out");
	vector<int>v;
	int n, m, x, cerinta, val;
	in >> n;
	for (int i = 0; i < n; i++) {
		in >> x;
		v.push_back(x);
	}
	in >> m;
	for (int i = 0; i < m; i++) {
		in >> cerinta;
		in >> val;
		if (cerinta == 0) {
			out<<f1(val, v);
		}
		else if (cerinta == 1) {
			out << f2(val, v);
		}
		else if (cerinta == 2) {
			out << f3(val, v);
		}
	}

	in.close();
	out.close();
	return 0;

}