Cod sursa(job #2724908)

Utilizator vladvaculinVlad V vladvaculin Data 18 martie 2021 01:41:39
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int s[100004];
int n,m,t,x, i;

int cb(int a, int b, int x){
	int m;
	while(a <= b) {
		m = a+(b-a)/2;
		if(s[m] == x){
			if (t==0 || t == 1){
				i = 0;
				while(s[m+i] == x){
					i++;
				}
				return m+i-1;
			} else {
				i = 0;
				while(s[m-i] == x){
					i++;
				}
				return m-i+1;
			}
		}
		if(s[m] > x){
			b = m-1;
		} else {
			a = m+1;
		}
	}
	if (t == 0)
		return -1;
	if (t == 1) return b;
	return a;
}
int main() {
	fin >> n;
	for(int i=1; i<=n; i++) fin >> s[i];
	fin >> m;
	
	for(int i = 0; i<m; i++){
		fin >> t >> x;
		fout << cb(1, n, x)<<'\n';
	}
}