Pagini recente » Rating necula antonie (tonynecula) | Cod sursa (job #1296919) | Cod sursa (job #206650) | Cod sursa (job #1230840) | Cod sursa (job #1901764)
#include <iostream>
#include <fstream>
using namespace std;
int v[100010],n;
int caut_bin_lower(int x)
{
int st=1,dr=n;
while(st<=dr)
{
int mid=(st+dr)/2;
if(x<=v[mid]) dr=mid-1;
else st=mid+1;
}
return st;
}
int caut_bin_upper(int x)
{
int st=1,dr=n;
while(st<=dr)
{
int mid=(st+dr)/2;
if(x>=v[mid]) st=mid+1;
else dr=mid-1;
}
return dr;
}
int main()
{
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
cin>>n;
for(int i=1;i<=n;i++) cin>>v[i];
int m,tip,x;
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>tip>>x;
if(tip==0)
{
int poz=caut_bin_upper(x);
if(v[poz]==x) cout<<poz<<"\n";
else cout<<"-1\n";
}
else if(tip==1) cout<<caut_bin_upper(x)<<"\n";
else cout<<caut_bin_lower(x)<<"\n";
}
return 0;
}