Pagini recente » Cod sursa (job #129542) | Cod sursa (job #1724623) | Cod sursa (job #2100330) | Cod sursa (job #858872) | Cod sursa (job #702629)
Cod sursa(job #702629)
#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));
}
}