Pagini recente » Cod sursa (job #357124) | Istoria paginii runda/pebarbamea/clasament | Cod sursa (job #1201877) | Cod sursa (job #2008821) | Cod sursa (job #2788229)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cautbin.in");
ofstream fout("cautbin.out");
int cautbin0(int a[100],int x,int n){
int mid,rg,lf;
lf=n;
rg=1;
mid=rg+(lf-rg)/2;
while(rg<=lf){
if(x>=a[mid])
rg=mid+1;
else
lf=mid-1;
mid=rg+(lf-rg)/2;
}
if(lf>=1 && a[lf]==x)
return lf;
else
return -1;
}
int cautbin1(int a[100],int x,int n){
int mid,rg,lf;
lf=n;
rg=1;
mid=rg+(lf-rg)/2;
while(rg<=lf){
if(x>=a[mid])
rg=mid+1;
else
lf=mid-1;
mid=rg+(lf-rg)/2;
}
if(lf>=1 && a[lf]<=x)
return lf;
else
return 1;
}
int cautbin2(int a[100],int x,int n){
int mid,rg,lf;
lf=n;
rg=1;
mid=rg+(lf-rg)/2;
while(rg<=lf){
if(x<=a[mid])
lf=mid-1;
else
rg=mid+1;
mid=rg+(lf-rg)/2;
}
if(rg<=n && a[rg]>=x)
return rg;
else
return n;
}
int main()
{
int n,m,a[100010],tip,val;
fin>>n;
for(int i=1;i<=n;i++)
fin>>a[i];
fin>>m;
while(m--){
fin>>tip>>val;
if(tip==0){
fout<<cautbin0(a,val,n);
fout<<'\n';
}
if(tip==1){
fout<<cautbin1(a,val,n);
fout<<'\n';
}
if(tip==2){
fout<<cautbin2(a,val,n);
fout<<'\n';
}
}
return 0;
}