Pagini recente » preONI 2007, Runda 1, Clasele 11-12 | Cod sursa (job #201604) | Istoria paginii preoni-2008/runda-finala/11-12 | Istoria paginii runda/oni_2017_cl10_ziua1/clasament | Cod sursa (job #201966)
Cod sursa(job #201966)
#include <stdio.h>
#define N 100001
int v[N],n,m,a,orig;
int cautbin12(int x){
int st=1,dr=n,m;
while(st<dr){
m=(st+dr)>>1;
if(v[m]<x) st=m+1;
else dr=m;
}
if(a==1)
return st-1;
else return st;
}
int cautbin0(int x){
int st=1,dr=n,m;
while(st<dr){
m=(st+dr)>>1;
if(v[m]<=x) st=m+1;
else dr=m;
}
if(v[st-1]!=x) return -1;
return st-1;
}
int main(){
int i,x;
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",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,&x);
orig=x;
if(a==1|| a==2) printf("%d\n",cautbin12(x));
else printf("%d\n",cautbin0(x));
}
return 0;
}