Pagini recente » Cod sursa (job #1867229) | Cod sursa (job #1021621) | Cod sursa (job #1849686) | Cod sursa (job #762644) | Cod sursa (job #793341)
Cod sursa(job #793341)
#include <cstdio>
int N,M;
int v[100010];
int t, x;
int bs () {
int i, step;
for (step=1; step<N; step<<=1);
for (i=0; step; step>>=1)
if (i+step<N && v[i+step]<=x)
i+=step;
return (t==0 && v[i]!=x)? -1: i+1;
}
int bs2() {
int i, step;
for (step=1; step<N; step<<=1);
for (i=N-1; step; step>>=1)
if (i-step>=0 && v[i-step]>=x)
i-=step;
return i+1;
}
int main () {
freopen("cautbin.in","rt",stdin);
freopen("cautbin.out","wt",stdout);
scanf("%d", &N);
for (int i=0; i<N; ++i) scanf("%d", &v[i]);
scanf("%d", &M);
for (;M;--M) {
scanf("%d %d\n", &t, &x);
printf("%d\n", (t==2)? bs2():bs() );
}
return 0;
}