Pagini recente » Monitorul de evaluare | Cod sursa (job #65239) | Istoria paginii runda/simulare_oji_2023_clasele_11_12_12_martiee/clasament | Cod sursa (job #74958) | Cod sursa (job #306034)
Cod sursa(job #306034)
#include<stdio.h>
#include<stdlib.h>
int *v,x,poz;
inline int search(int st,int dr,int q)
{
if(dr>=st)
{int m=st+(dr-st)/2;
switch(q)
{
case 0 : if(x==v[m]) poz=m;break;
case 2 : if(x<=v[m]) poz=m;break;
case 1 : if(x>=v[m]) poz=m;break;
}
if(x<v[m]) return search(st,m-1,q);
return search(m+1,dr,q);
}
return poz;
}
int main()
{int i,n,m,q;
freopen("cautbin.in","rt",stdin);
freopen("cautbin.out","wt",stdout);
scanf("%d",&n); v=(int*)calloc(n+1,sizeof(n));
for(i=1;i<=n;++i) scanf("%d",&v[i]);
scanf("%d",&m);
while(m)
{scanf("%d%d",&q,&x); poz=-1;
printf("%d\n",search(1,n,q));
--m;
}
return 0;
}