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