Cod sursa(job #2276169)

Utilizator GabiGabrielAndrei Gabriel GabiGabriel Data 4 noiembrie 2018 12:07:32
Problema Cautare binara Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb

#include<fstream>
using namespace std;
int v[100001], i, j, n, st, dr, I, nr, x,mid;
int main() {
	ifstream fin("cautbin.in");
	ofstream fout("cautbin.out");
	fin >> n;
	for (i = 1; i <= n; i++)
		fin >> v[i];
	fin >> I;
	for (i = 1; i <= I; i++) {
		fin >> nr;
		fin >> x;
		st = 1;
		dr = n;
		if (nr < 2) {
			while (st <= dr) {
				mid = (long)(st + dr) / 2;
				if (v[mid] <= x)
					st = mid + 1;
				else
					dr = mid - 1;
			}
			if (nr == 0)
				if (v[dr] == x)
					fout << dr << endl;
				else
					fout << -1 << endl;
			if (nr == 1)
				fout << dr << endl;
		}
		else {
			while (st <= dr) {
				mid = (long)(st + dr) / 2;
				if (v[mid] < x)
					st = mid + 1;
				else
					dr = mid - 1;
			}
			fout << st << endl;
		}
	}
	return 0;
}