Cod sursa(job #2205370)

Utilizator llama27Asd asd llama27 Data 18 mai 2018 21:51:01
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 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("cautbin.in");
ofstream out("cautbin.out");
int32_t myVector[MAX + 27], x, n, m;
void  s01(int32_t k)
{
	int32_t left = 1, right = n, mid, pivot = -1;
	while (left <= right) {
		mid = (right + left) / 2;
		if (x >= myVector[mid]) {
			pivot = mid;
			left = mid + 1;
		}
		else
			right = mid - 1;
	}
	if (k == 0 && myVector[pivot] != x)
		out << "-1";
	else
		out << pivot << '\n';
}
void s2()
{
	int32_t left = 1, right = n, mid, pivot = -1;
	while (left <= right) {
		mid = (right + left) / 2;
		if (myVector[mid] >= x) {
			pivot = mid;
			right = mid - 1;
		}
		else
			left = mid + 1;
	}
	out << pivot << '\n';
}
int main()
{
	int16_t c;
	in >> n;
	for (int32_t i = 1; i <= n; i++) {
		in >> myVector[i];
	}
	in >> m;
	while (m--) {
		in >> c >> x;
		if (c <= 1) {
			s01(c);
		}
		else
			s2();
	}
}