Pagini recente » Cod sursa (job #2327293) | Cod sursa (job #3212718) | Cod sursa (job #2292748) | Cod sursa (job #1781042) | Cod sursa (job #2184218)
#include <bits/stdc++.h>
using namespace std;
int n,a[100010],q,c,d;
int cautbin0(int x)
{
int l=1,r=n,m;
while(l<=r)
{
m=(r+l)/2;
if(a[m]<=x) l=m+1;
else r=m-1;
//cout<<m<<' ';
}
if(a[m]==x)return m;
if(a[m-1]==x) return m-1;
return -1;
}
int cautbin1(int x)
{
int l=1,r=n,m;
while(l<=r)
{
m=(r+l)/2;
if (a[m]<=x) l=m+1;
else r=m-1;
}
if(a[m]==x) return m;
if(a[m]>x) return m-1;
}
int cautbin2(int x)
{
int l=1,r=n,m;
while(l<=r)
{
m=(r+l)/2;
if(a[m]<x)l=m+1;
else r=m-1;
// cout<<m<<' ';
}
if(a[m]>=x)return m;
else return m+1;
}
int main()
{
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
cin>>q;
for(int i=1;i<=q;i++)
{
cin>>c>>d;
if(c==0) cout<<cautbin0(d);
else if(c==1) cout<<cautbin1(d);
else cout<<cautbin2(d);
}
return 0;
}