Pagini recente » Cod sursa (job #542269) | Cod sursa (job #3244619) | Cod sursa (job #365897) | Cod sursa (job #3002258) | Cod sursa (job #1332676)
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
#define nmax 100010
int n,m,st,dr,mij,v[nmax],tip,x;
int caut0(int val)
{
while (st<=dr)
{
mij=(st+dr)/2;
if (v[mij]>val)
dr=mij-1;
else
st=mij+1;
}
mij=(st+dr)/2;
if (v[mij]>val)
mij--;
if (v[mij]==val)
return mij;
return -1;
}
int caut1(int val)
{
while (st<dr)
{
mij=(st+dr)/2;
if (v[mij]>val)
dr=mij-1;
else
st=mij+1;
}
mij=(st+dr)/2;
if (v[mij]>val)
mij--;
return mij;
}
int caut2(int val)
{
while (st<dr)
{
mij=(st+dr)/2;
if (v[mij]<val)
st=mij+1;
else
dr=mij-1;
}
mij=(st+dr)/2;
if (v[mij]<val)
mij++;
return mij;
}
int main()
{
int i;
cin>>n;
for (i=1;i<=n;i++)
cin>>v[i];
cin>>m;
for (i=1;i<=m;i++)
{
cin>>tip>>x;
st=1;
dr=n;
if (tip==0)
cout<<caut0(x)<<'\n';
else if (tip==1)
cout<<caut1(x)<<'\n';
else
cout<<caut2(x)<<'\n';
}
}