Pagini recente » Statistici Ionescu Stefan (Stefan98) | Cod sursa (job #532030) | Rating Constantin Ruben (Ruben123) | Cod sursa (job #3218979) | Cod sursa (job #1574772)
#include <iostream>
#include <fstream>
#define MAX 100001
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int n,v[MAX],i,tip,val,t;
int c_bin_0(int first,int last,int val){
int m;
while(first<=last){
m=(first+last)/2;
if(v[m]<=val)
first=m+1;
else
last=m-1;}
m=(first+last)/2;
if(v[m]>val)
m--;
if(v[m]==val)
return m;
return -1;}
int c_bin_1(int first,int last,int val){
int m;
while(first<last){
m=(first+last)/2;
if(v[m]<=val)
first=m+1;
else
last=m;}
m=(first+last)/2;
if(v[m]>val)
--m;
return m;}
int c_bin_2(int first,int last,int val){
int m;
while(first<last){
m=(first+last)/2;
if(v[m]<val)
first=m+1;
else
last=m;}
m=(first+last)/2;
if(v[m]<val)
++m;
return m;}
int main()
{
cin>>n;
for(i=1;i<=n;++i)
cin>>v[i];
cin>>t;
for(i=1;i<=t;++i)
{
cin>>tip>>val;
if(tip==0) cout<<c_bin_0(1,n,val)<<"\n";
if(tip==1) cout<<c_bin_1(1,n,val)<<"\n";
if(tip==2) cout<<c_bin_2(1,n,val)<<"\n";
}
return 0;
}