Pagini recente » Cod sursa (job #950167) | Cod sursa (job #2968013) | Cod sursa (job #1303073) | Cod sursa (job #1040451) | Cod sursa (job #1648688)
#include <stdio.h>
#include <stdlib.h>
int v[100000];
int caut1(int v[],int n,int x){
int i=0,pas=1;;
while(pas<n)
pas*=2;
while(pas!=0){
if(i+pas<=n && v[i+pas]<=x)
i+=pas;
pas/=2;
}
return i;
}
int caut2(int v[],int n,int x){
int i=0,pas=1;;
while(pas<n)
pas*=2;
while(pas!=0){
if(i+pas<=n && v[i+pas]>=x)
i+=pas;
pas/=2;
}
return i;
}
int caut3(int v[],int n,int x){
int i=0,pas=1;;
while(pas<n)
pas*=2;
while(pas!=0){
if(i+pas<n && v[i+pas]<x)
i+=pas;
pas/=2;
}
return i+2;
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
int n,q,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&v[i]);
scanf("%d",&q);
for(i=0;i<q;i++){
int test,nita;
scanf("%d %d",&test,&nita);
if(test==0){
printf("%d\n",caut1(v,n,nita)+1);
}
else
if(test==1)
printf("%d\n",caut2(v,n,nita));
else
printf("%d\n",caut3(v,n,nita));
}
return 0;
}