Cod sursa(job #629296)

Utilizator the_snyper06FMI - ALexandru Mihai the_snyper06 Data 3 noiembrie 2011 05:27:09
Problema Cautare binara Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<cstdio>
FILE *fin = freopen("cautbin.in", "r", stdin), 
		 *fout = freopen("cautbin.out", "w", stdout);

using namespace std;
int n, m;
int v[100001];

int CautareBinara(int st, int dr, int comanda, int x) {
	if(st > dr)
		if(comanda == 1 || v[dr] == x) return dr;
		else if(comanda == 2) return st; 
		else return -1;
		
	int m = (st + dr) / 2;		
	if(v[m] < x || (comanda < 2 && v[m] == x)) return CautareBinara(m + 1, dr, comanda, x);
	else return CautareBinara(st, m - 1, comanda, x);
}

int main() {
	int i, comanda, x;
	
	scanf("%d", &n);
	for(i = 1; i <= n; i++) scanf("%d", v + i);
	
	scanf("%d", &m);
	for(i = 1; i <= m; i++)
		scanf("%d %d", &comanda, &x), printf("%d\n", CautareBinara(1, n, comanda, x));
	
	return 0;
}