Pagini recente » Cod sursa (job #19316) | Cod sursa (job #633957) | Cod sursa (job #850207) | Cod sursa (job #2227577) | Cod sursa (job #2231700)
#include <cstdio>
#define nmax 100000
using namespace std;
int main()
{
freopen("cautbin.in","rt",stdin);
freopen("cautbin.out","wt",stdout);
int n,m,i,v[nmax+1],tip,val,pas,k;
scanf("%d",&n);
for(i=0;i<n;i++) {
scanf("%d",&v[i]);
}
scanf("%d",&m);
for(i=0;i<m;i++) {
scanf("%d %d",&tip,&val);
pas=1;
while(pas<=n) pas<<=1;
pas>>=1;
k=0;
switch(tip) {
case 0:
while(pas) {
if(k+pas<n && v[k+pas]<=val) k+=pas;
pas>>=1;
}
if(v[k]==val) printf("%d\n",k+1);
else printf("-1\n");
break;
case 1:
while(pas) {
if(k+pas<n && v[k+pas]<=val) k+=pas;
pas>>=1;
}
printf("%d\n",k+1);
break;
case 2:
while(pas) {
if(k+pas<n && v[k+pas]<val) k+=pas;
pas>>=1;
}
if(k==0 && v[0]>=val) printf("1\n");
else printf("%d\n",k+2);
break;
}
}
return 0;
}