Cod sursa(job #2274120)

Utilizator cezar.plescaCezar Plesca cezar.plesca Data 1 noiembrie 2018 13:32:40
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 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);

	input >> N;

	for(int i=0;i<N;i++){
		input >> v[i];
	}

	sort(v,v + N);

	input >> M;

	int tip,x;
	int index;
	for(int i=0;i<M;i++){
		input >> tip >> x;

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

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