Pagini recente » Cod sursa (job #1375510) | Cod sursa (job #186209) | Cod sursa (job #570327) | Cod sursa (job #2461215) | Cod sursa (job #792253)
Cod sursa(job #792253)
#include <cstdio>
int N,M;
int v[100100];
int type, val;
void bs(int val) {
int i, step;
for (step=1; step<N; step<<=1);
for (i=0; step; step>>=1)
if (i+step<N && v[i+step]<=val)
i+=step;
if (!type && v[i]!=val)
printf("-1\n");
else printf("%d\n",i+1);
}
void bs2(int val) {
int i,step;
for (step=1; step<N; step<<=1);
for (i=N-1; step; step>>=1)
if (i-step>=0 && v[i-step]>=val)
i-=step;
printf("%d\n",i+1);
}
int main () {
freopen("cautbin.in","rt",stdin);
freopen("cautbin.out","wt",stdout);
scanf("%d",&N);
for (int i=0; i<N; scanf("%d",&v[i]), ++i);
scanf("%d",&M);
for (; M>0; --M) {
scanf("%d %d\n", &type, &val);
switch (type) {
case 0: case 1: bs(val); break;
case 2: bs2(val); break;
}
}
return 0;
}