Pagini recente » Cod sursa (job #1324304) | Cod sursa (job #2554419) | Cod sursa (job #2252907) | Cod sursa (job #1966900) | Cod sursa (job #2151323)
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
const int NMAX=100001;
int a[NMAX];
int Cautbin0(int li, int ls, int x) {
int m;
while(li<=ls) {
m=(li+ls)/2;
if(x<=a[m])
li=m+1;
else
ls=m-1;
}
m=(li+ls)/2;
if(a[m]>x) m--;
if(a[m]==x) return m;
return -1;
}
int Cautbin1(int li, int ls, int x) {
int m;
while (li<ls) {
m=(li+ls)/2;
if (a[m]<=x)
li=m+1;
else
ls=m;
}
m=(li+ls)/2;
if(a[m]>x)
--m;
return m;
}
int Cautbin2(int li, int ls, int x) {
int m;
while(li<ls) {
m=(li+ls)/2;
if(a[m]<x)
li=m+1;
else
ls=m;
}
m=(li+ls)/2;
if(a[m]<x)
++m;
return m;
}
int main()
{
int n,m,x,y;
fin>>n;
for(int i=1; i<=n; i++) fin>>a[i];
fin>>m;
for(int i=1; i<=m; i++) {
fin>>x>>y;
switch(x) {
case 0:
fout<<Cautbin0(1,n,y)<<endl;
break;
case 1:
fout<<Cautbin1(1,n,y)<<endl;
break;
case 2:
fout<<Cautbin2(1,n,y)<<endl;
break;
}
}
return 0;
}