Cod sursa(job #2274126)

Utilizator cezar.plescaCezar Plesca cezar.plesca Data 1 noiembrie 2018 13:47:42
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include<stdio.h>

#include<iostream>
#include<fstream>
#include <algorithm>

using namespace std;

int v[100000];

int main(){
	int N,M;

	//ifstream input("cautbin.in");
	//ofstream output("cautbin.out",std::ios::out);

	freopen("cautbin.in", "r", stdin);
    freopen("cautbin.out", "w", stdout);

	scanf("%d", &N);
	//input >> N;

	for(int i=0;i<N;i++){
		scanf("%d", &v[i]);
		//input >> v[i];
	}

	//input >> M;
	scanf("%d", &M);

	int tip,x;
	int index;
	for(int i=0;i<M;i++){
		 scanf("%d%d", &tip, &x);
		//input >> tip >> x;

		switch(tip){
			case 0:
				index=upper_bound(v, v+N, x)-v;
				if(index>=1 && v[index-1]==x)
					printf("%d\n",index);
					//output << index << endl;
				else
					printf("-1\n");
					//output << -1 << endl;
				break;
			case 1:
				index=lower_bound(v, v+N, x+1)-v;
				printf("%d\n",index);
				//output << index << endl;
				break;
			case 2:
				index=upper_bound(v, v+N, x-1)-v;
				printf("%d\n",index+1);
				//output << (index + 1) << endl;
				break;
		}
	}

	//input.close();
	//output.close();
	return 0;
}