Pagini recente » Cod sursa (job #2028001) | Cod sursa (job #484026) | Cod sursa (job #2414699) | Cod sursa (job #1106672) | Cod sursa (job #2081148)
#include <fstream>
using namespace std;
int n,m;
int a[100003];
int CautBin0(int x)
{
int st,dr,mijl,poz;
st=1;
dr=n;
poz=-1;
while(st<=dr)
{
mijl=(st+dr)/2;
if(a[mijl]<x)
st=mijl+1;
if(a[mijl]>x)
dr=mijl-1;
if(a[mijl]==x)
{
poz=mijl;
st=mijl+1;
}
}
return poz;
}
int CautBin1(int x)
{
int st,dr,mijl,poz;
st=1;
dr=n;
poz=-1;
while(st<=dr)
{
mijl=(st+dr)/2;
if(a[mijl]<=x)
{
poz=mijl;
st=mijl+1;
}
else
dr=mijl-1;
}
if(poz==-1)
while(1);
return poz;
}
int CautBin2(int x)
{
int st,dr,mijl,poz;
st=1;
dr=n;
poz=-1;
while(st<=dr)
{
mijl=(st+dr)/2;
if(a[mijl]>=x)
{
poz=mijl;
dr=mijl-1;
}
else
st=mijl+1;
}
if(poz==-1)
while(1);
return poz;
}
int main()
{
int i,c,x;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
fin>>n;
for(i=1;i<=n;++i)
fin>>a[i];
fin>>m;
for(i=1;i<=m;++i)
{
fin>>c>>x;
if(c==0) fout<<CautBin0(x)<<"\n";
if(c==1) fout<<CautBin1(x)<<"\n";
if(c==2) fout<<CautBin2(x)<<"\n";
}
fin.close();
fout.close();
return 0;
}