Cod sursa(job #2205343)

Utilizator llama27Asd asd llama27 Data 18 mai 2018 20:32:19
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.46 kb
#include <fstream>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <vector>
#include <stack>
#include <cstring>
#include <queue>
#define MAX 100000
using namespace std;
ifstream in("main.in");
ofstream out("main.out");
int32_t myVector[MAX + 27], x, n, m;
void search0() {
	int32_t left = 0, right = n - 1, mid = (right + left) / 2;
	while (left <= right) {
		mid = (left + right) / 2;
		if (x >= myVector[mid]) {
			left = mid + 1;
		}
		else
			right = mid - 1;
	}
	if (myVector[mid - 1] == x) {
		out << mid << '\n';
	}
	else
		out << "-1" << '\n';
}
void search1() {
	int32_t left = 0, right = n - 1, mid;
	while (left <= right) {
		mid = (right + left) / 2;
		if (x >= myVector[mid]) {
			left = mid + 1;
		}
		else
			right = mid - 1;
	}
	out << mid << '\n';
}
void search2() {
	int32_t left = 0, right = n - 1, mid;
	while (left <= right) {
		mid = (left + right) / 2;
		if (x == myVector[mid])
			break;
		if (x > myVector[mid]) {
			left = mid + 1;
		}
		else
			right = mid - 1;
	}
	if (left > right)
		out << mid - 1 << '\n';
	else
		out << mid << '\n';
}
int main()
{
	
	int16_t c;
	in >> n;
	for (int32_t i = 0; i < n; i++)
		in >> myVector[i];
	in >> m;
	for (int32_t i = 0; i < m; i++) {
		in >> c >> x;
		if (c == 0) {
			search0();
		}
		if (c == 1) {
			search1();
		}
		if (c == 2) {
			search2();
		}
	}
	return 0;
}