#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