Cod sursa(job #252190)
#include<fstream.h>
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int s,a[100005],i,n,m,x1,x2;
int cautbin(int st,int dr,int x)
{
int aux=(st+dr)/2;
if(dr-st<2) return st;
if(x<=a[aux]) dr=aux;
else if(x>=aux) st=aux;
cautbin(st,dr,x);
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
f>>m;
for(i=1;i<=m;i++)
{
f>>x1>>x2;
if(x1==0)
{
s=cautbin(1,n,x2);
if(a[s]==x2)
g<<s<<"\n";
else if(a[s+1]==x2) g<<(s+1)<<"\n";
else g<<-1<<"\n";
}
if(x1==1)
{
s=cautbin(1,n,x2);
if(a[s+1]<=x2) s=s+1;
g<<s<<"\n";
}
if(x1==2)
{
s=cautbin(1,n,x2);
if(a[s]>=x2) s=s-1;
g<<(s+1)<<"\n";
}
}
return 0;
}