Pagini recente » Cod sursa (job #2687130) | CIA | Cod sursa (job #3202783) | Djok | Cod sursa (job #2085751)
#include <iostream>
#include <fstream>
using namespace std;
int cautBinar0(int v[],int st,int dr,int val)
{
int m;
while(st<=dr)
{
m=(st+dr)/2;
if (v[m]<=val)
st=m+1;
else
dr=m-1;
}
m=(st+dr)/2;
if (v[m]>val) m--;
if (v[m]==val) return m;
return -1;
}
int cautBinar1(int v[],int st,int dr,int val)
{
int m;
while(st<dr)
{
m=(st+dr)/2;
if (v[m]<=val)
st=m+1;
else
dr=m;
}
m=(st+dr)/2;
if (v[m]>val) m--;
return m;
}
int cautBinar2(int v[],int st,int dr,int val)
{
int m;
while(st<dr)
{
m=(st+dr)/2;
if (v[m]<val)
st=m+1;
else
dr=m;
}
m=(st+dr)/2;
if (v[m]<val) ++m;
return m;
}
int main()
{
int q,t,x[100],n,m;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for (int i=1;i<=n;i++)
f>>x[i];
f>>m;
for (int i=1;i<=m;i++)
{
f>>q>>t;
if (q==0) g<<cautBinar0(x,1,n,t)<<"\n";
if (q==1) g<<cautBinar1(x,1,n,t)<<"\n";
if (q==2) g<<cautBinar2(x,1,n,t)<<"\n";
}
return 0;
}