Cod sursa(job #661908)
#include<fstream.h>
int a[100008],n,m,val,cz;
int caz_1(int x)
{int mid,hi=n,lo=1,poz;
while(lo<=hi)
{mid=(lo+hi)/2;
if(a[mid]>x)
hi=mid-1;
else
lo=mid+1;
poz=mid;}
if(a[mid]==x)
return poz;
else
return -1;
}
int caz_2(int x)
{int mid,hi=n,lo=1,poz;
while(lo<=hi)
{mid=(lo+hi)/2;
if(a[mid]<=x)
lo=mid+1;
else
{hi=mid-1;
poz=mid;}
}
return poz;
}
int caz_3(int x)
{int mid,hi=n,lo=1,poz;
while(lo<=hi)
{mid=(lo+hi)/2;
if( a[mid]>=x)
hi=mid-1;
else
{lo=mid+1;
poz=mid;}
}
return poz;
}
int main()
{ ifstream f("cautbin.in");
ofstream g("cautbin.out");
while(f)
f>>n;
for(int i=1;i<=n;i++)
f>>a[i];
f>>m;
for(int i=0;i<m;i++)
{f>>cz>>val;
if(cz==0)
g<<caz_1(val)<<"\n";
if(cz==1)
g<<caz_2(val)<<"\n";
if(cz==2)
g<<caz_3(val)<<"\n";
}
f.close();
g.close();
return 0;}