Pagini recente » Cod sursa (job #638616) | Cod sursa (job #1672227) | Cod sursa (job #2366897) | Cod sursa (job #613320) | Cod sursa (job #1009573)
#include<fstream>
using namespace std;
int N,a[100001],k,M,h;
int cautbin0(int x)
{
int st=1;
int dr=N;
int mij,ret=-1;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]<x)
st=mij+1;
else if(a[mij]>x)
dr=mij-1;
else
{
ret=mij;
st=mij+1;
}
}
return ret;
}
int cautbin1(int x)
{
int st=1;
int dr=N;
int mij,ret=-1;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]<=x)
{
ret=mij;
st=mij+1;
}
else
dr=mij-1;
}
return ret;
}
int cautbin2(int x)
{
int st=1;
int dr=N;
int mij,ret=-1;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]>=x)
{
ret=mij;
dr=mij-1;
}
else
st=mij+1;
}
return ret;
}
int main()
{
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
cin>>N;
for(int i=1;i<=N;++i)
cin>>a[i];
cin>>M;
for(int i=1;i<=M;++i)
{
cin>>h>>k;
if(h==0)
cout<<cautbin0(k)<<'\n';
if(h==1)
cout<<cautbin1(k)<<'\n';
if(h==2)
cout<<cautbin2(k)<<'\n';
}
return 0;
}