Pagini recente » Cod sursa (job #2153410) | Cod sursa (job #1970511) | Cod sursa (job #250464) | Cod sursa (job #354478) | Cod sursa (job #1802422)
#include <fstream>
using namespace std;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
int n,v[100010];
void cautbin(int s,int d,int x)
{
int mij;
if(s>d)
g<<"-1";
else
{
mij=(s+d)/2;
if(x>v[mij])
cautbin(mij+1,d,x);
else
if(x<v[mij])
cautbin(s,mij-1,x);
else
if(x==v[mij]&&v[mij+1]!=x)
g<<mij;
else
if(x==v[mij]&&v[mij+1]==x)
cautbin(mij+1,d,x);
}
}
void cautbin2(int s,int d,int x)
{
int mij;
if(s>d)
cautbin2(1,n,x-1);
else
{
mij=(s+d)/2;
if(x>v[mij])
cautbin2(mij+1,d,x);
else
if(x<v[mij])
cautbin2(s,mij-1,x);
else
if(x==v[mij]&&v[mij+1]!=x)
g<<mij;
else
if(x==v[mij]&&v[mij+1]==x)
cautbin2(mij+1,d,x);
}
}
void cautbin3(int s,int d,int x)
{
int mij;
if(s>d)
cautbin3(1,n,x+1);
else
{
mij=(s+d)/2;
if(v[mij]>x)
cautbin3(s,mij-1,x);
else
if(v[mij]<x)
cautbin3(mij+1,d,x);
else
if(x==v[mij]&&v[mij-1]!=x)
g<<mij;
else
cautbin3(s,mij-1,x);
}
}
int main()
{
int i,c[100001],m;
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
f>>m;
for(i=1;i<=m*2;i=i+2)
f>>c[i]>>c[i+1];
for(i=1;i<=m*2;i=i+2)
{
if(c[i]==0)
{
cautbin(1,n,c[i+1]);
g<<'\n';
}
else
if(c[i]==1)
{
cautbin2(1,n,c[i+1]);
g<<'\n';
}
else
{
cautbin3(1,n,c[i+1]);
g<<'\n';
}
}
return 0;
}