Pagini recente » Cod sursa (job #880113) | Cod sursa (job #3168377) | Cod sursa (job #918309) | Cod sursa (job #1911500) | Cod sursa (job #1455437)
#include <iostream>
#include <fstream>
using namespace std;
int N,M,arr[1000000],Q,num,op;
int bsearch1(int numri,int high,int low)
{
int mid;
while(low<=high)
{
mid=low+(high-low)/2;
if(arr[mid]<=numri)
low=mid+1;
else if(arr[mid]>numri)
high=mid-1;
}
if(arr[high]==numri)
return high;
return -1;
}
int bsearch2(int numri,int high,int low)
{
int mid;
while(low<=high)
{
mid=low+(high-low)/2;
if(arr[mid]<=numri)
low=mid+1;
else if(arr[mid]>numri)
high=mid-1;
}
return high;
}
int bsearch3(int numri,int high,int low)
{
int mid;
while(low<=high)
{
mid=low+(high-low)/2;
if(arr[mid]<numri)
low=mid+1;
else if(arr[mid]>=numri)
high=mid-1;
}
return low;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
cin>>N;
for(int i=1;i<=N;i++)
cin>>arr[i];
cin>>Q;
while(Q--)
{
cin>>op>>num;
if(op==0)
cout<<bsearch1(num,N,1)<<"\n";
if(op==1)
cout<<bsearch2(num,N,1)<<"\n";
if(op==2)
cout<<bsearch3(num,N,1)<<"\n";
}
return 0;
}