Pagini recente » Cod sursa (job #1774346) | Cod sursa (job #2678568) | Cod sursa (job #399742) | Cod sursa (job #234050) | Cod sursa (job #2682258)
#include <cstdio>
#include <fstream>
using namespace std;
ofstream fout("cautbin.out");
void solve0();
void solve1();
void solve2();
int n,nc,i,c,x,v[100001];
int main()
{
freopen("cautbin.in","r",stdin);
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&v[i]);
scanf("%d",&nc);
for(i=1;i<=nc;++i)
{
scanf("%d %d",&c,&x);
if(c==0)
solve0();
else if(c==1) solve1();
else solve2();
}
return 0;
}
void solve0()
{
int m,st,dr;
st=1;
dr=n;
while(st<=dr)
{
m=(st+dr)/2;
if(x<v[m]) dr=m-1;
else st=m+1;
}
if(v[dr]==x) fout<<dr<<'\n';
else fout<<-1<<'\n';
}
void solve1()
{
int m,st,dr;
st=1;
dr=n;
while(st<=dr)
{
m=(st+dr)/2;
if(x<v[m]) dr=m-1;
else st=m+1;
}
if(v[dr]<=x) fout<<dr<<'\n';
}
void solve2()
{
int m,st,dr;
st=1;
dr=n;
while(st<=dr)
{
m=(st+dr)/2;
if(x<=v[m]) dr=m-1;
else st=m+1;
}
fout<<st<<'\n';
}