Cod sursa(job #2844716)

Utilizator gabriel10tm@gmail.comGabriel Marian [email protected] Data 5 februarie 2022 10:48:30
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.43 kb
#pragma region
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
#include <unordered_set>
#include <unordered_map>
#include <map>
typedef unsigned long long ull;
typedef long long ll;
typedef unsigned int uint;
#define endl '\n'
using namespace std;
#if 1
#include <fstream>
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
#define cin fin
#define cout fout
#endif
#pragma endregion
int a[100000] = {1,2,2,2,3,4,7,8,8,8,8,10};
int n;

int Cb(int x)
{
	int st = 0, dr = n-1;
	int p = -1;
	while (st <= dr)
	{
		int md = (st + dr) / 2;
		if (a[md] == x)
		{
			p = md;
			st = md + 1;
		}
		else if (a[md] > x)
			dr = md - 1;
		else
			st = md + 1;
	}
	return p;
}
int Cb2(int x)
{
	int st = 0, dr = n-1;
	int p = -1;
	while (st <= dr)
	{
		int md = (st + dr) / 2;
		if (a[md] <= x)
		{
			p = md;
			st = md + 1;
		}
		else
			dr = md - 1;
	}
	return p;
}
int Cb3(int x)
{
	int st = 0, dr = n-1;
	int p = -1;
	while (st <= dr)
	{
		int md = (st + dr) / 2;
		if (a[md] >= x)
		{
			p = md;
			dr = md - 1;
		}
		else
			st = md + 1;
	}
	return p;
}

int main()
{
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> a[i];
	int k = 0;
	while (k--)
	{
		int cer, nr;
		cin >> cer >> nr;
		if (cer == 0)
		{
			cout << Cb(nr) << endl;
		}
		else if (cer == 1)
		{
			cout << Cb2(nr) << endl;
		}
		else if (cer == 2)
		{
			cout << Cb3(nr) << endl;
		}
	}
}