Pagini recente » Cod sursa (job #1825655) | Cod sursa (job #2328572) | Cod sursa (job #1484321) | Cod sursa (job #612670) | Cod sursa (job #1454360)
#include <stdio.h>
#define N 100000
#define fr(i,a,b) for(i=a;i<b;++i)
int a[N],x;
int sm(int l,int r){
if(r-l==1)return a[l]<x;
int c=(l+r)>>1;
if(a[c]<x)return(c-l)+sm(c,r);
return sm(l,c);
}
int gt(int l,int r){
if(r-l==1)return a[l]>x;
int c=(l+r)>>1;
if(a[c]>x)return gt(l,c)+(r-c);
return gt(c,r);
}
int main(){
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int n,m,i;
scanf("%i",&n);
fr(i,0,n)scanf("%i",a+i);
scanf("%i",&m);
fr(i,0,m){
int y,z;
scanf("%i%i",&y,&x);
if(y==0){
z=n-gt(0,n);
if(z==0||a[z-1]!=x)printf("-1\n");
else printf("%i\n",z);
}
else if(y==1)printf("%i\n",n-gt(0,n));
else if(y==2)printf("%i\n",1+sm(0,n));
}
return 0;
}