Pagini recente » Cod sursa (job #79260) | Cod sursa (job #2698685) | Cod sursa (job #2854399) | Cod sursa (job #2602638) | Cod sursa (job #870241)
Cod sursa(job #870241)
#include<stdio.h>
int n,m,v[100002],a,b,st,dr,mij,r,i,x;
int cb1(int b){
int st,dr,mij;
st=1;dr=n;
while(st<=dr){
mij=st+(dr-st)/2;
if (b<v[mij])dr=mij-1;
else st=mij+1;
}
return dr;
}
int cb2(int b){
int st,dr,mij;
st=1;dr=n;
while(st<=dr){
mij=st+(dr-st)/2;
if (b<=v[mij])dr=mij-1;
else st=mij+1;
}
return dr;
}
int main(){
freopen("cautbin.in","rt",stdin);
freopen("cautbin.out","wt",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++){
scanf("%d",v+i);
}
scanf("%d",&m);
for (i=1;i<=m;i++){
scanf("%d%d",&a,&b);
//cautarea binara
//afisarea rezultatului
if (a==0){
dr=cb1(b);
if (v[dr]==b)x=dr;
else x=-1;
}
if (a==1){
x=cb1(b);
}
if (a==2){
x=1+cb2(b);
}
printf("%d\n",x);
}
fclose(stdin);
fclose(stdout);
return 0;
}