Pagini recente » Cod sursa (job #2598047) | Istoria paginii utilizator/xunuoarecare | Cod sursa (job #1961475) | Cod sursa (job #1434645) | Cod sursa (job #256645)
Cod sursa(job #256645)
#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");
else fprintf(g,"%d\n",i+1);
}
else{
for(step=1;step<n;step<<=1);
for(i=n;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;
}