先把各条地毯的数据存储下来。
然后从后往前找到的第一条包含(x,y)的地毯编号就是答案。
#include"cstdio" #include"cctype" const int maxn=100001; int read() { int c,x=0; while(!isdigit(c=getchar())); while(x=x*10+c-‘0‘,isdigit(c=getchar())); return x; } int a[maxn],b[maxn],g[maxn],k[maxn]; int main() { int n=read(); for(int i=1; i<=n; i++) a[i]=read(),b[i]=read(),g[i]=read(),k[i]=read(); int x=read(),y=read(),ans=-1; for(int i=n; i>=1; i--) if(a[i]<=x && a[i]+g[i]>=x && b[i]<=y && b[i]+k[i]>=y) { ans=i; break; } printf("%d",ans); return 0; }