Pagini recente » Cod sursa (job #2723170) | Cod sursa (job #1291659) | Cod sursa (job #1385221) | Cod sursa (job #21763) | Cod sursa (job #493627)
Cod sursa(job #493627)
#include <stdio.h>
#include <stdlib.h>
int i,N,M,v[1010],q,x,r,p;
void cb(int st,int dr)
{
int mijl=st+(dr-st)/2;
if(v[mijl]==x) r=mijl; // r = pozitia el. cautat
else
if(st==dr)
{
r=mijl;
p=-1;
return;
}
if(v[mijl]<x) cb(mijl+1,dr);
if(v[mijl]>x) cb(st,mijl-1);
}
int main()
{
freopen("cautbin.in","r",stdin);
freopen("cautbin.out","w",stdout);
scanf("%d",&N);
for(i=1;i<=N;i++) scanf("%d",&v[i]);
scanf("%d",&M);
for(int j=1;j<=M;j++)
{
scanf("%d %d",&q,&x);
p=0;
cb(1,N);
if(q==0)
if(p==-1) printf("-1");
else
{
for(i=r;i<=N && v[i]==x;i++);
printf("%d",i-1);
}
if(q==1)
{
for(i=r;i<=N && v[i]<=x;i++);
printf("%d",i-1);
}
if(q==2)
{
for(i=r;i>=1 && v[i]>=x;i--);
printf("%d",i+1);
}
printf("\n");
}
}