Pagini recente » Cod sursa (job #1063248) | Cod sursa (job #283565)
Cod sursa(job #283565)
#include<stdio.h>
long int m,m1,i,n,v[100001];
int a;
long int cautare(long int val){
long int i,step;
for(step=1; step<n; step<<=1);
for(i=0; step; step>>=1)if(i+step<n && v[i+step]<=val)i+=step;
return i;
}
int main(void){
freopen("cautbin.in","r",stdin);
freopen("cautbin.out", "w",stdout);
scanf("%ld",&n);
for(i=1; i<n+1; i++ ) scanf("%ld",&v[i]);
scanf("%ld",&m);
for(i=1; i<m+1; i++){ scanf("%d",&a); if(a==0){ scanf("%ld",&m1); m1=cautare(m1); if(m1==0 || m1>n)printf("%d\n",-1); else printf("%ld\n",m1);}
else if(a==1){ scanf("%ld",&m1); printf("%ld\n",cautare(m1)); }
else { scanf("%ld",&m1); long int m2=cautare(m1); if(m1-v[m2]>m1-v[m2+1]) printf("%ld\n",m2+1); else printf("%ld\n",m2); }
}
return 0;}