Cod sursa(job #1293132)

Utilizator vlad2901Vlad Berindei vlad2901 Data 15 decembrie 2014 14:38:47
Problema Cautare binara Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>

#define MAXN 100000

using namespace std;

int v[MAXN];
int n, m;

int main() {
	ifstream fin("cautbin.in");
	ofstream fout("cautbin.out");
	fin >> n;
	for (int i = 0; i < n; ++i) {
		fin >> v[i];
	}

	int m;
	int op;
	int x;

	fin >> m;
	for (int i = 0 ; i < m; ++i) {
		fin >> op >> x;
		int st = 0;
		int dr = n-1;
		int mij;
		int sol = -1;
		if (op == 1) {
			while (st <= dr) {
				mij = (st + dr) / 2;
				if (x >= v[mij]) {
					sol = mij;
					st = mij + 1;
				} else {
					dr = mij - 1;
				}
			}
			fout << (v[sol] == x ? sol + 1 : -1) << endl;
		}

		if (op == 1) {
			while (st <= dr) {
				mij = (st + dr) / 2;
				if (x >= v[mij]) {
					sol = mij;
					st = mij + 1;
				} else {
					dr = mij - 1;
				}
			}
			fout << sol + 1 << endl;
		}

		if (op == 2) {
			while (st <= dr) {
				mij = (st + dr) / 2;
				if (x <= v[mij]) {
					sol = mij;
					dr = mij - 1;
				} else {
					st = mij + 1;
				}
			}
			fout << sol + 1 << endl;
		}
	}
	fout << endl;
}