Pagini recente » Cod sursa (job #48437) | Cod sursa (job #1317225) | Cod sursa (job #1027014) | Cod sursa (job #2933260) | Cod sursa (job #1772894)
#include <fstream>
using namespace std;
ifstream a("cautbin.in");
ofstream b("cautbin.out");
int n,m,v[100001],p,x;
int cautbin0(int f,int l,int x)
{
int m=(f+l)/2;
if(f>l)return -1;
else if(v[f]==x)
return f;
else if(v[m]>x)return cautbin0(f,m-1,x);
else return cautbin0(m+1,l,x);
}
int cautbin1(int f,int l,int x)
{
int m=(f+l)/2;
if(f>=l)
return f;
else if(v[m]>=x)return cautbin1(f,m-1,x);
else return cautbin1(m,l,x);
}
int cautbin2(int f,int l,int x)
{
int m=(f+l)/2;
if(f==l)
return f;
else if(v[m]<x)return cautbin2(m+1,l,x);
else return cautbin2(f,m,x);
}
int main()
{
a>>n;
for(int i=1;i<=n;i++)
a>>v[i];
a>>m;
for(int i=1;i<=m;i++)
{
a>>p>>x;
int c=0;
if(p==0)c=cautbin0(1,n,x);
else if(p==1)c=cautbin1(1,n,x);
else if(p==2)c=cautbin2(1,n,x);
b<<p<<" "<<c<<endl;
}
return 0;
}