Cod sursa(job #3032246)

Utilizator keepcodingTanase Daniel keepcoding Data 21 martie 2023 19:54:30
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;

int v[100000];

int binary_search(int len, int action, int x) {
	int left = 0, right = len - 1;
	while (left < right) {
        int mid = (left + right + 1) / 2;
		if (action == 2) {
			mid = (left + right) / 2;
			if (v[mid] < x) {
				left = mid + 1;
			} else {
				right = mid;
			}
			continue;
		}
        if (v[mid] > x) {
            right = mid - 1;
        } else {
            left = mid;
        }
	}
	if (action == 2 && v[left] >= x) {
		return left;
	}
	if (action != 2 && v[right] <= x) {
		return right;
	}
	return -1;
}

int main() {
	ifstream cin("cautbin.in");
	ofstream cout("cautbin.out");
	int n;
	cin >> n;
	for (int i = 0; i < n; ++i) {
		cin >> v[i];
	}
	int m;
	cin >> m;
	for (int j = 0; j < m; ++j) {
		int action, x;
		cin >> action >> x;
		cout << binary_search(n, action, x) + 1 << "\n";
	}
	cout.close();
    return 0;
}