Cod sursa(job #2620410)

Utilizator ADINAIOANA-BORTAAdina Borta ADINAIOANA-BORTA Data 28 mai 2020 20:54:31
Problema Cautare binara Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>

int v[100001];
using namespace std;

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()
{
    ifstream in("cautbin.in");
    ofstream out("cautbin.out");

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

	in.close();
	out.close();
	return 0;
	

}