#include<stdio.h>
int a[100005][2];
int max(int a,int b){return a>b?a:b;}
int main()
{
int n,q,i,x;
while(scanf("%d",&n)!=EOF)//n<=100000
{
for(i=0;i<n;i++) scanf("%d%d",&a[i][0],&a[i][1]);//两个数均大于等于0且小于等于1000000000
scanf("%d",&q);//q<=100000
while(q--)
{
scanf("%d",&x);//0<=x<=1000000000
int ans=-1;
for(i=0;i<n;i++)
{
if(a[i][0]<x) ans=max(ans,a[i][1]);
}
printf("%d\n",ans);
}
}
return 0;
}优化以上代码。题目大概是说:给定n个点(xi,yi)。然后q个查询,每个查询是一个a,输出x坐标小于a的最大的y,不存在则输出-1