Pagini recente » Cod sursa (job #369606) | Cod sursa (job #1866094) | Cod sursa (job #3189858) | Cod sursa (job #2747086) | Cod sursa (job #2493577)
#include<bits/stdc++.h>
using namespace std;
int a[100010],n,m,q;
int cautare_binara0(int x)
{
int l=1; int r=n; int mid;
while(l<r)
{
mid=(r+l)/2;
if(a[mid]>=x)r=mid;else l=mid+1;
}
if(a[mid]!=x)mid--;
if(a[mid]!=x)return -1;else
return mid;
}
int cautare_binara1(int x)
{
int l=1; int r=n; int mid;
while(l<r)
{
mid=(r+l)/2;
if(a[mid]>=x)r=mid;else l=mid+1;
}
if(a[mid]!=x)mid--;
return mid;
}
int cautare_binara2(int x)
{
int l=1; int r=n; int mid;
while(l<r)
{
mid=(r+l)/2;
if(a[mid]>x)r=mid;else l=mid+1;
}
if(a[mid]!=x)mid++;
return mid;
}
int main()
{
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int x;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>q>>x;
if(q==0) cout<<cautare_binara0(x)<<"\n";
if(q==1) cout<<cautare_binara1(x)<<"\n";
if(q==2) cout<<cautare_binara2(x)<<"\n";
}
return 0;
}