Pagini recente » Cod sursa (job #2933507) | Cod sursa (job #1465824) | Cod sursa (job #798680) | Cod sursa (job #2148534) | Cod sursa (job #2830696)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int a[100005];
int cautbin01(int sch, int n)
{
int st=1, dr=n, ans=-1;
int mij=(st+dr)/2;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]<=sch)
{
ans=mij;
st=mij+1;
}
else
dr=mij-1;
}
return ans;
}
int cautbin2(int sch, int n)
{
int st=1, dr=n, ans=-1;
int mij=(st+dr)/2;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]<sch)
st=mij+1;
else
{
ans=mij;
dr=mij-1;
}
}
return ans;
}
int main()
{
int n;
fin>>n;
for(int i=1; i<=n; i++)
{
fin>>a[i];
}
int m;
fin>>m;
for(int i=1; i<=m; i++)
{
int y, x;
fin>>y>>x;
if(y==0 || y==1)
fout<<cautbin01(x, n)<<'\n';
else
fout<<cautbin2(x, n)<<'\n';
}
return 0;
}