Cod sursa(job #2021274)

Utilizator vladm98Munteanu Vlad vladm98 Data 13 septembrie 2017 02:37:01
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;

int v[100005];

int cauta (int x, int n)
{
	int i, best = 0;
	for (i = 0; (1<<i) <= n; ++i);
	for (; i >= 0; --i)
		if (best + (1<<i) <= n && v[best + (1<<i)] <= x)
			best += (1<<i);
	return best;
}
int main(int argc, char const *argv[])
	{
	ifstream fin ("cautbin.in");
	ofstream fout ("cautbin.out");
	// ifstream fin ("input");
	// ofstream fout ("output");
	int n, m;
	fin >> n;
	for (int i = 1; i<=n; ++i)
		fin >> v[i];
	fin >> m;
	for (int i = 1; i<=m; ++i)
	{
		int type, x;
		fin >> type >> x;
		cout << cauta(x, n) << " il caut pe " << x << '\n';
		if (type == 0)
		{
			if (v[cauta(x, n)] == x)
				fout << cauta(x, n) << '\n';
			else fout << "-1\n";
		}
		if (type == 1)
		{
			fout << cauta(x, n) << '\n';
		}
		if (type == 2)
		{

			fout << cauta(x-1, n)+1 << '\n';
		}
	}
	return 0;
}