Pagini recente » Cod sursa (job #979408) | Cod sursa (job #2027816) | Cod sursa (job #2204424) | Cod sursa (job #1973575) | Cod sursa (job #391525)
Cod sursa(job #391525)
#include<stdio.h>
long n,m,t,x,k,a[100005],p=-10;
int main()
{ freopen("cautbin.in","r",stdin);
scanf("%ld",&n);
for(int i=1;i<=n;i++)
scanf("%ld",&a[i]);
scanf("%ld",&m);
freopen("cautbin.out","w",stdout);
long i,j,mid,ok;
while(m>0)
{ m--;
scanf("%ld%ld",&t,&x);
if(t==0)
{ i=1;
j=n;
ok=1;
while(i<j && ok)
{ mid=i+(j-i)/2;
if(a[mid]==x) ok=0;
else if(a[mid]>x) j=mid-1;
else i=mid+1;
}
if(ok==1) printf("-1\n");
else
{ while(a[mid]==x && mid<=n ) mid++;
printf("%ld\n",mid-1);
}
}
if(t==1)
{ i=1;
j=n;
ok=1;
while(i<j && ok)
{ mid=i+(j-i)/2;
if(a[mid]==x) ok=0;
else if(a[mid]>x) j=mid-1;
else i=mid+1;
}
if(ok==0)
{ while(a[mid]==x && mid<=n) mid++;
printf("%ld\n",mid-1);
}
else printf("%ld\n",mid);
}
if(t==2)
{ i=1;
j=n;
ok=1;
while(i<j && ok)
{ mid=i+(j-i)/2;
if(a[mid]==x) ok=0;
else if(a[mid]>x) j=mid-1;
else i=mid+1;
}
if(ok==0)
{ while(a[mid]==x && 1<=mid) mid--;
printf("%ld\n",mid+1);
}
else printf("%ld\n",mid+1);
}
// printf("%ld\n",k);
}
fclose(stdin);
fclose(stdout);
return 0;
}