Cod sursa(job #2542646)

Utilizator radustn92Radu Stancu radustn92 Data 10 februarie 2020 13:16:17
Problema Cautare binara Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <vector>
using namespace std;

const int NMAX = 100505;
int N, M, arr[NMAX];

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

	scanf("%d", &N);
	for (int i = 1; i <= N; i++) {
		scanf("%d", &arr[i]);
	}
	scanf("%d", &M);

	int queryType, x;
	for (int queryNo = 0; queryNo < M; queryNo++) {
		scanf("%d%d", &queryType, &x);
		switch(queryType) {
			case 0: {
				int posLte = lower_bound(arr + 1, arr + N + 1, x + 1) - arr - 1;
				if (posLte > 0 && arr[posLte] == x){
					printf("%d\n", posLte);
				} else {
					printf("-1\n");
				}
				break;
			}
			case 1: {
				int posLte = lower_bound(arr + 1, arr + N + 1, x + 1) - arr - 1;
				printf("%d\n", posLte);
				break;
			}
			case 2: {
				int posLte = lower_bound(arr + 1, arr + N + 1, x) - arr;
				printf("%d\n", posLte);
				break;
			}
		}
	}
	return 0;
}