![:(](./images/smilies/icon_frown.gif)
#include<cstdio>
using namespace std;
int main()
{
long int shrt,tall,n=0,h,low,high,q,mid,num,a[50002],i,b[25001];
scanf("%ld", &num);
scanf("%ld", &a[n++]);
for(i=1;i<num;i++)
{
scanf("%ld", &h);
if(h != a[n-1])
a[n++]=h;
}
scanf("%ld", &q);
for(i=0;i<q;i++)
scanf("%ld", &b);
for(i=0;i<q;i++)
{
if((a[0]==a[n-1]) && (b==a[0]) && (b==a[n-1]))
{
printf("X X\n");
continue;
}
if(b>a[n-1])
{
printf("%ld X\n",a[n-1]);
continue;
}
if(b==a[n-1])
{
printf("%ld X\n",a[n-2]);
continue;
}
if(b<a[0])
{
printf("X %ld\n",a[0]);
continue;
}
if(b==a[0])
{
printf("X %ld\n",a[1]);
continue;
}
low=0;
high=n-1;
tall=shrt=0;
while(low<high)
{
mid=(low+high)/2;
if(a[mid]==b)
{
shrt=mid-1;
tall=mid+1;
break;
}
else if(a[mid]<b)
low=mid+1;
else
high=mid-1;
}
if(tall==0)
printf("%ld %ld\n",a[low-1],a[high]);
else
printf("%ld %ld\n",a[shrt],a[tall]);
}
return 0;
}
give me some test cases