Pagini recente » Cod sursa (job #215448) | Cod sursa (job #1267935) | Cod sursa (job #2747539) | Cod sursa (job #1477268) | Cod sursa (job #1131638)
#include <fstream>
using namespace std;
int n,x[100003],i,a,b,m,t;
int cautbinzero(int x[], int n,int a)
{
int p,q,m,r;
p=1;
q=n;
r=-1;
while(p<=q)
{
m=(p+q)/2;
if(x[m]==a)
{
r=m;
p=m+1;
}
else
if(x[m]>a)
{
q=m-1;
}
else
{
p=m+1;
}
}
return r;
}
int cautbinunu(int x[], int n,int a)
{
int p,q,m,r;
p=1;
q=n;
r=-1;
while(p<=q)
{
m=(p+q)/2;
if(x[m]<=a)
{
r=m;
p=m+1;
}
else
if(x[m]>a)
{
q=m-1;
}
else
{
p=m+1;
}
}
return r;
}
int cautbindoi(int x[], int n,int a)
{
int p,q,m,r;
p=1;
q=n;
r=-1;
while(p<=q)
{
m=(p+q)/2;
if(x[m]>=a)
{
r=m;
q=m-1;
}
else
if(x[m]>a)
{
q=m-1;
}
else
{
p=m+1;
}
}
return r;
}
int main()
{
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for(i=1;i<=n;i++)
fin>>x[i];
fin>>m;
for(i=1;i<=m;i++)
{
fin>>a>>b;
if(a==0)
t=cautbinzero(x,n,b);
else
if(a==1)
t=cautbinunu(x,n,b);
else
t=cautbindoi(x,n,b);
fout<<t<<"\n";
}
}