Cod sursa(job #848773)
#include<fstream>
using namespace std;
int a[100001];
int caut0x( int st, int dr,int x)
{
int mij;
while(st<=dr)
{
mij=(st+dr)/2;
if(a[mij]<=x)
st=mij+1;
else
dr=mij-1;
}
mij=(st+dr)/2;
if(a[mij]>x)
mij--;
if(a[mij]==x)
return mij;
else
return -1;
}
int caut1x(int st,int dr,int x)
{
int mij;
while(st<dr)
{
mij=(st+dr)/2;
if(a[mij]<=x)
st=mij+1;
else
dr=mij;
}
mij=(st+dr)/2;
if(a[mij]>x)
mij--;
return mij;
}
int caut2x (int st, int dr, int x)
{
int mij;
while(st<dr)
{
mij=(st+dr)/2;
if(a[mij]>=x)
dr=mij;
else
st=mij+1;
}
mij=(st+dr)/2;
if(a[mij]<x)
mij++;
return mij;
}
int main()
{
int i,n,m,x,y;
ifstream f("cautbin.in");
ofstream g("cautbin.out");
f>>n;
for(int i=1;i<=n;i++)
f>>a[i];
f>>m;
for(int i=1;i<=m;i++)
{
f>>y>>x;
if(y==0)g<<caut0x(1,n,x)<<"\n";
if(y==1)g<<caut1x(1,n,x)<<"\n";
if(y==2)g<<caut2x(1,n,x)<<"\n";
}
return 0;
}