Pagini recente » Cod sursa (job #1731622) | Cod sursa (job #878240) | Cod sursa (job #773320) | Cod sursa (job #189347) | Cod sursa (job #957792)
Cod sursa(job #957792)
#include<fstream>
using namespace std;
int main(){
int n, i, m, res, p, p2, op, x;
freopen("cautbin.in", "rt", stdin);
freopen("cautbin.out", "wt", stdout);
scanf("%d", &n);
int a[n];
for(i=0; i<n; i++)
scanf("%d", &a[i]);
scanf("%d", &m);
for(p2=1; p2<=n; p2<<=1);
for(; m; --m){
scanf("%d %d", &op, &x);
switch(op){
case 0:
for(i=0,p=p2; p; p>>=1)
if(i+p<n && a[i+p]<=x) i+=p;
res = a[i]==x?i:-1;
break;
case 1:
for(i=0,p=p2; p; p>>=1)
if(i+p<n && a[i+p]<=x) i+=p;
res = i;
break;
case 2:
for(i=n-1, p=p2; p; p>>=1)
if(i-p>=0 && a[i-p]>=x) i-=p;
res = i;
break;
}
printf("%d\n", res+1);
}
fclose(stdin);
fclose(stdout);
return 0;
}