Cod sursa(job #1249292)

Utilizator silidragosSilion Dragos silidragos Data 26 octombrie 2014 19:43:54
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;

int N, m, k;
vector<int> V;

ofstream g("cautbin.out", ios::out);

void bin0(int val){
	int start = 0;
	int end = V.size()-1;

	while (start <= end){
		m = (start + end) / 2;
		if (V[m] <= val) start = m+1;
		else end = m-1;
	}
	if (V[m] > val) m--;
	if (V[m] == val) g<< m+1 << '\n';
	else g << "-1\n";


}

void bin1(int val){
	int start = 0;
	int end = V.size() - 1;

	while (start <= end){
		m = (start + end) / 2;
		if (V[m] <= val) start = m + 1;
		else end = m - 1;

	}
	if (V[m] > val) m--;
	if (V[m] <= val) g << m + 1 << '\n';
	else g << "-1\n";

}

void bin2(int val){
	int start = 0;
	int end = V.size() - 1;

	while (start <= end){
		m = (start + end) / 2;
		if (V[m] < val) start = m + 1;
		else end = m - 1;

	}
	if (V[m] < val) m++;
	if (V[m] >= val) g << m + 1 << '\n';
	else g << "-1\n";



}

int main(){
	ifstream f("cautbin.in", ios::in);


	f >> N;
	for (int i = 0; i < N; i++){
		f >> k;
		V.push_back(k);
	}
	f >> m;

	int com, val;
	for (int i = 0; i < m; i++){
		f >> com >> val;
		if (com == 0) bin0(val);
		else if (com == 1) bin1(val);
		else bin2(val);
	}

	f.close();
	g.close();
	return 0;
}