Pagini recente » Cod sursa (job #1590046) | Cod sursa (job #3282945) | Cod sursa (job #2548876) | Cod sursa (job #3190395) | Cod sursa (job #256670)
Cod sursa(job #256670)
#include <stdio.h>
#define in "cautbin.in"
#define out "cautbin.out"
FILE *f=fopen(in,"r"),*g=fopen(out,"w");
int n,v[100001];
int main(){
int i,m,select,x,step;
fscanf(f,"%d",&n);
for(i=0;i<n;i++)fscanf(f,"%d",&v[i]);
fscanf(f,"%d",&m);
for(;m;m--){
fscanf(f,"%d%d",&select,&x);
if(select<2){
for(step=1;step<n;step<<=1);
for(i=0;step;step>>=1)
if(i+step<n&&v[i+step]<=x)
i+=step;
if(!select&&v[i]!=x)fprintf(g,"-1\n");
else fprintf(g,"%d\n",i+1);
}
else{
for(step=1;step<n;step<<=1);
for(i=n-1;step;step>>=1)
if(i-step>=0&&v[i-step]>=x)
i-=step;
fprintf(g,"%d\n",i+1);
}
}
fclose(f);
fclose(g);
return 0;
}