Pagini recente » Cod sursa (job #2980715) | Cod sursa (job #1324204) | Cod sursa (job #2658539) | Cod sursa (job #533657) | Cod sursa (job #209703)
Cod sursa(job #209703)
#include<fstream.h>
long n,a[100],i,m,st,dr,mij;
long binar1(long x);
long binar2(long x);
long binar3(long x);
int main()
{
ifstream f("cautbin.in");
ofstream g("cautbin.out");
long o,x;
f>>n;
for(i=1;i<=n;i++)
f>>a[i];
f>>m;
for(i=1;i<=m;i++)
{
f>>o>>x;
if(o==0)
g<<binar1(x)<<"\n";
if(o==1)
g<<binar2(x)<<"\n";
if(o==2)
g<<binar3(x)<<"\n";
}
return 0;
}
long binar1(long x)
{
st=1;dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]==x)
{
while(a[mij]==x) mij++;
return mij-1;
}
else
if(a[mij]<x)
st=mij+1;
else
dr=mij-1;
}
if(st>dr) return -1;
}
long binar2(long x)
{
st=1;dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]==x)
return mij;
else
if(a[mij]<x)
st=mij+1;
else
dr=mij-1;
}
return st-1;
}
long binar3(long x)
{
st=1;dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]==x)
return mij;
else
if(a[mij]<x)
st=mij+1;
else
dr=mij-1;
}
return dr+1;
}