Pagini recente » Borderou de evaluare (job #1565167) | Cod sursa (job #1632705) | Borderou de evaluare (job #963149) | Borderou de evaluare (job #630601) | Cod sursa (job #211177)
Cod sursa(job #211177)
#include<stdio.h>
int n,m,x,a[101];
int bin(int n,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
return k;}
return k;}
void solve(){
int i,q,poz,k;
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);
poz=bin(n,x);
if(q==0)
if(a[poz]==x)
printf("%d\n",poz);
else
printf("-1\n");
if(q==1)
if(a[poz]==x){
while(a[poz+1]==x)
++poz;
printf("%d\n",poz-1);}
else{
while(a[poz]>x)
--poz;
printf("%d\n",poz);}
if(q==2)
if(a[poz]==x){
while(a[poz-1]==x)
--poz;
printf("%d\n",poz+1);}
else{
while(a[poz]<x)
++poz;
printf("%d\n",poz);}}}
int main(){
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
solve();
return 0;}