Pagini recente » Cod sursa (job #140853) | Cod sursa (job #1866420) | Cod sursa (job #2084174) | Cod sursa (job #2875836) | Cod sursa (job #212521)
Cod sursa(job #212521)
#include<stdio.h>
int n,m,a[101];
int cautbin0(int x){
int st,dr,k;
st=1;
dr=n;
while(st<=dr){
k=(st+dr)/2;
if(a[k]<x)
st=k+1;
else if(a[k]>x)
dr=k-1;
else if(a[k]==x){
while(a[k+1]==x&&k<n)
++k;
return k;}}
return -1;}
int cautbin1(int x){
int st,dr,k;
st=1;
dr=n;
while(st<=dr){
k=(st+dr)/2;
if(a[k]<x)
st=k+1;
else if(a[k]>x)
dr=k-1;
else if(a[k]==x)
while(a[k+1]==x&&k<n)
++k;}
return k-1;}
int cautbin2(int x){
int st,dr,k;
st=1;
dr=n;
while(st<=dr){
k=(st+dr)/2;
if(a[k]<x)
st=k+1;
else if(a[k]>x)
dr=k-1;
else if(a[k]==x){
while(a[k-1]==x&&k>0)
--k;
return k+1;}}
return k;}
void solve(){
int i,q,x;
scanf("%d",&n);
for(i=1; i<=n; ++i)
scanf("%d",&a[i]);
scanf("%d",&m);
for(i=1; i<=m; ++i){
scanf("%d%d",&q,&x);
if(q==0)
printf("%d\n",cautbin0(x));
else if(q==1)
printf("%d\n",cautbin1(x));
else if(q==2)
printf("%d\n",cautbin2(x));}}
int main(){
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
solve();
return 0;}