Pagini recente » Cod sursa (job #2228905) | Cod sursa (job #600304) | Cod sursa (job #2652065) | Cod sursa (job #743905) | Cod sursa (job #1600201)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int n,i,k,v[100001],a,x,j=-1,j2=-1,m,h;
int bin(int s,int d)
{
if(s>d)return -1;
else
{m=(s+d)/2;
if(x==v[m])return m;
else if(x<v[m])return bin(s,m-1);
else if(x>v[m])return bin(m+1,d);
}
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)fin>>v[i];
fin>>k;
for(h=1;h<=k;h++)
{
fin>>a>>x;
j=bin(0,n-1);
while(v[m]==x && m<=n)
{if(v[m+1]!=x)j=bin(m,n-1);m++;}
if(a==0) fout<<j<<"\n";
if(a==1)
{
for(i=j;i<=n;i++)
{
if(v[i]==x){fout<<i<<"\n";break;}
if(v[i]>x){fout<<i<<"\n";break;}
}}
if(a==2)
{
for(i=m;i>=1;i--)
{
if(v[i]==x && v[i-1]<x){fout<<i<<"\n";break;}
if(v[i]<x && v[i-1]<v[i]){fout<<i<<"\n";break;}
}
}
}
return 0;
}