Pagini recente » Cod sursa (job #2709230) | Cod sursa (job #2711101) | Cod sursa (job #38116) | Cod sursa (job #683542) | Cod sursa (job #759189)
Cod sursa(job #759189)
#include <cstdio>
#define MAX 100001
int n,v[MAX];
int cb0(int x){
int l=1,r=n,m;
while(l<r)
{
m=(l+r)/2;
if(v[m]>x)r=m; else l=m+1;
}
return v[r-1]==x?r-1:-1;
}
int cb1(int x){
int l=1,r=n,m;
while(r-l>1)
{
m=(l+r)/2;
if(v[m]>x)r=m-1; else l=m;
}
return v[r]<=x?r:l;
}
int cb2(int x){
int l=1,r=n,m;
while(r-l>1)
{
m=(l+r)/2;
if(v[m]<x)l=m+1; else r=m;
}
return v[l]>=x?l:r;
}
int main(){
int m,c,x;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&v[i]);
scanf("%d",&m);
while(m--)
{
scanf("%d %d",&c,&x);
switch(c)
{
case 0 : printf("%d\n",cb0(x)); break;
case 1 : printf("%d\n",cb1(x)); break;
case 2 : printf("%d\n",cb2(x)); break;
}
}
return 0;
}