Pagini recente » Cod sursa (job #1303187) | Cod sursa (job #2211447) | Cod sursa (job #245926)
Cod sursa(job #245926)
#include <stdio.h>
int main()
{
int n,v[100001],m,tipm,x,l1,l2;
freopen ("cautbin.in","r",stdin);
freopen ("cautbin.out","w",stdout);
scanf ("%d",&n);
for (int i = 1; i <= n; ++i)
scanf ("%d",&v[i]);
scanf ("%d",&m);
for (int nrm = 1; nrm <= m; ++nrm)
{
scanf ("%d%d",&tipm,&x);
if (x > v [n])
if (tipm==0)
printf ("%d\n",-1);
else printf ("%d\n",n);
else
{
switch (tipm)
{
case 0:
l1=1;
l2=n;
while ((v [l1] < x)&&(v [l2] > x)&&(l1+1<l2))
if (v [(l1+l2)/2] < x)
l1 = (l1+l2)/2;
else l2 = (l1+l2)/2;
if (v [l1] == x)
printf ("%d\n",l1);
else if (v [l2] == x)
printf ("%d\n",l2);
else printf ("%d\n",-1);
break;
case 1:
l1=1;
l2=n;
while ((v [l1] < x)&&(v [l2] > x)&&(l1+1<l2))
if (v [(l1+l2)/2] < x)
l1 = (l1+l2)/2;
else l2 = (l1+l2)/2;
printf ("%d\n",l1);
break;
case 2:
l1=1;
l2=n;
while ((v [l1] < x)&&(v [l2] > x)&&(l1+1<l2))
if (v [(l1+l2)/2] < x)
l1 = (l1+l2)/2;
else l2 = (l1+l2)/2;
printf ("%d\n",l2);
break;
}
}
}
return 0;
}