Cod sursa(job #2620429)

Utilizator ADINAIOANA-BORTAAdina Borta ADINAIOANA-BORTA Data 28 mai 2020 21:18:21
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>

int v[100001];

int f1(int val, int n) {
	int pas = 1 << 16, s = 0;

	while (pas != 0) {
		if (pas + s <= n && v[pas + s] <= val ) {
			s = pas + s;
		}
		pas = pas / 2;
	}
	
	if (v[s] == val) {
		return s;
	}
	return -1;

}
int f2(int val, int n) {
	int pas = 1 << 16, s = 0;

	while (pas != 0) {
		if (pas + s <= n && v[pas + s] <= val) {
			s = pas + s;
		}
		pas = pas / 2;
	}
	return s;
}
int f3(int val, int n) {
	int pas = 1 << 16, s = 0;

	while (pas != 0) {
		if (pas + s <= n && v[pas+s] < val){
			s= s + pas;
		}
		pas = pas / 2;
	}
	return s+1;
}


int main()
{
    std::ifstream in("cautbin.in");
    std::ofstream out("cautbin.out");

	int n, m, x, cerinta, val;
	in >> n;
	for (int i = 1; i <= n; i++) {
		in >> x;
		v[i]= x;
	}
	in >> m;
	for (int i = 0; i < m; i++) {
		in >> cerinta;
		in >> val;
		if (cerinta == 0) {
			out << f1(val, n) << "\n";
		}
		else if (cerinta == 1) {
			out << f2(val, n) << "\n";
		}
		else if (cerinta == 2) {
			out << f3(val, n) << "\n";
		}
	}

	return 0;
	

}