Pagini recente » Cod sursa (job #2563461) | Cod sursa (job #466781) | Cod sursa (job #2864214) | Cod sursa (job #2971761) | Cod sursa (job #748381)
Cod sursa(job #748381)
#include<fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int a[100000],n,m;
void read(){
f>>n;
for(int i=0;i<n;i++)
f>>a[i];
}
int binary_search0(int x){
int lo=-1,hi=n,mid;
while(hi-lo>1){
mid=(hi+lo)/2;
if(a[mid]<=x)
lo=mid;
else
hi=mid;
}
return lo;
}
int binary_search1(int x){
int lo=-1,hi=n,mid;
while(hi-lo>1){
mid=(hi+lo)/2;
if(a[mid]<x)
lo=mid;
else
hi=mid;
}
return hi;
}
int main(){
read();
f>>m;
int x,y,lo;
for(int i=1;i<=m;i++){
f>>x>>y;
if(x==0){
lo=binary_search0(y);
if(lo>=0 && a[lo]==y)
g<<lo+1<<endl;
else
g<<"-1"<<endl;
}
if(x==1){
lo=binary_search0(y);
g<<lo+1<<endl;
}
if(x==2){
lo=binary_search1(y);
g<<lo+1<<endl;
}
}
return 0;
}