Pagini recente » Cod sursa (job #1468335) | Cod sursa (job #626448) | Cod sursa (job #2422602) | Cod sursa (job #2972150) | Cod sursa (job #199204)
Cod sursa(job #199204)
#include <cstdio>
int t,x,n,v[100000];
int search3(){
long p=1,u=n,m;
while (u!=p){
m=(p+u)/2+1;
if (v[m]==x)
return m;
if (v[m]>x)
u=m;
if (v[m]<x)
p=m+1;
}
if (v[u]==x)
return u;
if (v[p]==x)
return p;
return u;
}
int search2(){
long p=1,u=n,m;
while (u-p>1){
m=(p+u)/2-1;
if (v[m]==x)
return m;
if (v[m]>x)
u=m;
if (v[m]<x)
p=m+1;
}
if (v[p]==x)
return p;
if (v[u]==x)
return u;
return p;
}
int search1(){
long p=1,u=n,m;
while (u!=p){
m=(p+u)/2;
if (v[m]==x)
return m;
if (v[m]>x)
u=m;
if (v[m]<x)
p=m+1;
}
return -1;
}
void write(int i){
printf("%d\n",i);
}
void read(){
scanf("%d%d",&t,&x);
if (t==0)
write(search1());
else if (t==1)
write(search2());
else if (t==2)
write(search3());
}
int main(){
int i,m;
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){
read();
//write(solve());
}
}