Cod sursa(job #702629)

Utilizator Victor10Oltean Victor Victor10 Data 2 martie 2012 01:22:14
Problema Cautare binara Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <cstdio>

int N, A[1005];

int binary_search0(int x) {
    int hi = N+1, lo = 0, mid;
    while (hi - lo > 1) {
      mid = (lo + hi) / 2;
      if (A[mid] <= x)
        lo = mid;
       else
        hi = mid;
    }
    if (lo == -1 || A[lo] != x)
        return -1;
    else
        return lo;
}

int binary_search1(int x) {
    int hi = N+1, lo = 0, mid;
    while (hi - lo > 1) {
      mid = (lo + hi) / 2;
      if (A[mid] <= x)
        lo = mid;
       else
        hi = mid;
    }
    return lo;
}

int binary_search2(int x) {
    int hi = N+1, lo = 0, mid;
    while (hi - lo > 1) {
      mid = (lo + hi) / 2;
      if (A[mid] < x)
        lo = mid;
       else
        hi = mid;
    }
    return hi;
}

int main(){
	
	freopen("cautbin.in","r",stdin);
	freopen("cautbin.out","w",stdout);
	
	int j, x, m, aux;
	scanf("%d",&N);
	for(j=1; j<=N; ++j)
		scanf("%d",&A[j]);
	
	scanf("%d",&m);
	for(;m--;){
		scanf("%d %d",&aux, &x);
		if(aux==0) printf("%d\n",binary_search0(x));
		if(aux==1) printf("%d\n",binary_search1(x));
		if(aux==2) printf("%d\n",binary_search2(x));
	}
}