Pagini recente » Cod sursa (job #3216574) | Cod sursa (job #3197122)
#include <fstream>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
long long int x[100001];
int bin_search(long long int a,int st,int dr,long long int x[])
{
int ans=-1;
while(st<=dr)
{
int mij=(st+dr)/2;
if(x[mij]<=a)
{
st=mij+1;
ans=mij;
}
else
{
dr=mij-1;
ans=mij-1;
}
}
return ans;
}
int bin_search2(long long int a,int st,int dr,long long int x[])
{
int ans=-1;
while(st<=dr)
{
int mij=(st+dr)/2;
if(x[mij]<a)
{
st=mij+1;
ans=mij+1;
}
else
{
dr=mij-1;
ans=mij;
}
}
return ans;
}
int main()
{
int n,m,op1[100001],op2[100001];
cin>>n;
for(int i=1;i<=n;i++)
cin>>x[i];
cin>>m;
for(int i=1;i<=m;i++)
cin>>op1[i]>>op2[i];
for(int i=1;i<=m;i++)
if(op1[i]==0)
{
int b=bin_search(op2[i],1,n,x);
if(x[b]==op2[i])
cout<<b<<'\n';
else
cout<<-1<<'\n';
}
else if(op1[i]==1)
{
int b=bin_search(op2[i],1,n,x);
cout<<b<<'\n';
}
else
{
int b=bin_search2(op2[i],1,n,x);
cout<<b<<'\n';
}
}