Pagini recente » Cod sursa (job #855463) | Cod sursa (job #2878396) | Cod sursa (job #3163117) | Cod sursa (job #2607851) | Cod sursa (job #2828374)
#include <fstream>
using namespace std;
ifstream in("cautbin.in");
ofstream out("cautbin.out");
int v[100005];
int cautbin01(int v[],int x,int n)
{
int rasp=-1,st=1,dr=n;
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[mij]<=x)
{
rasp=mij;
st=mij+1;
}
else
dr=mij-1;
}
return rasp;
}
int cautbin2(int v[],int x,int n)
{
int rasp=-1,st=1,dr=n;
while(st<=dr)
{
int mij=(st+dr)/2;
if(v[mij]>=x)
{
rasp=mij;
dr=mij-1;
}
else
st=mij+1;
}
return rasp;
}
int main()
{
int n,m,val,x,rasp;
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
in>>m;
for(int i=1;i<=m;i++)
{
in>>val>>x;
if(val==2)
out<<cautbin2(v,x,n)<<'\n';
if(val==1)
out<<cautbin01(v,x,n)<<'\n';
if(val==0)
{
rasp=cautbin01(v,x,n);
if(x==v[rasp])
out<<rasp<<'\n';
else
out<<"-1"<<'\n';
}
}
return 0;
}