Pagini recente » Cod sursa (job #1040009) | Cod sursa (job #1854975) | Cod sursa (job #48805) | Cod sursa (job #1758401) | Cod sursa (job #1963159)
#include <fstream>
using namespace std;
ifstream cin("cautbin.in");
ofstream cout("cautbin.out");
int n,v[100005],x,i,m,c;
int c0(int st, int dr,int v[],int x)
{
int mij=(dr+st)/2;
while(st<=dr)
{
if(v[mij]>x)
{
st=mij+1;
}
else
dr=mij-1;
mij=(st+dr)/2;
}
mij=(dr+st)/2;
if (v[mij] > x) mij --;
if (v[mij] == x)
return mij;
return -1;
}
int c1(int st,int dr,int v[],int x)
{
int mij=(dr+st)/2;
while(st<dr)
{
mij=(st+dr)/2;
if(v[mij]<=x)
{
st=mij+1;
}
else
dr=mij;
mij=(st+dr)/2;
}
mij=(st+dr)/2;
if(v[mij]>x)
--mij;
return mij;
}
int c2(int st,int dr,int v[],int x)
{
int mij=(dr+st)/2;
while(st<dr)
{
mij=(st+dr)/2;
if(v[mij]<x)
{
st=mij+1;
}
else
dr=mij;
mij=(st+dr)/2;
}
if(v[mij]<x)
++mij;
return mij;
}
int main()
{
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
cin>>m;
for(i=1;i<=m;i++)
{
cin>>c>>x;
if(c==0)
cout<<c0(1,n,v,x)<<"\n";
else
if(c==1)
cout<<c1(1,n,v,x)<<"\n";
else
cout<<c2(1,n,v,x)<<"\n";
}
return 0;
}