Pagini recente » Cod sursa (job #792710) | Cod sursa (job #3279658) | Cod sursa (job #190126) | Cod sursa (job #2167102) | Cod sursa (job #505342)
Cod sursa(job #505342)
#include <stdio.h>
int n, a[100001],mij, max, min, i, x, y, m;
int main(){
freopen ("cautbin.in","r",stdin);
freopen ("cautbin.out","w",stdout);
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",&y,&x);
min=1; max=n; mij=0;
if (y==0){
while (a[mij]!=x&&min<=max){
mij=(min+max)/2;
if (a[mij]<x){min=mij+1;}
else {if (a[mij]>x){max=mij-1;}}}
while (a[mij+1]==x) mij++;
if (max<min) printf ("%d\n",-1);
else printf ("%d\n",mij);}
if (y==1){
while (a[mij]>x&&min<=max){
mij=(min+max)/2;
if (a[mij]>x){max=mij-1;}}
while (a[mij+1]<=x)mij++;
printf ("%d\n",mij);}
if (y==2){
while (a[mij]<x&&min<=max){
mij=(min+max)/2;
if (a[mij]<x){min=mij+1;}}
while (a[mij-1]>=x) mij--;
printf ("%d\n",mij);}}
return (0);}