Pagini recente » Cod sursa (job #479043) | Cod sursa (job #1017565) | Cod sursa (job #1537603) | Cod sursa (job #3171581) | Cod sursa (job #2151342)
#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(a[m]<=x)
li=m+1;
else
ls=m-1;
}
if(a[ls]==x)
return ls;
return -1;
}
int Cautbin1(int li, int ls, int x) {
int m;
while (li<=ls) {
m=(li+ls)/2;
if (a[m]>x)
ls=m-1;
else
li=m+1;
}
return ls;
}
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-1;
}
return li;
}
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;
if(x==0) fout<<Cautbin0(1,n,y)<<endl;
if(x==1) fout<<Cautbin1(1,n,y)<<endl;
if(x==2) fout<<Cautbin2(1,n,y)<<endl;
}
return 0;
}