思路
感觉是入门题,没用到算法。
我们从下往上叠地毯,那么我们从上往下数第一个覆盖这个坐标的地毯的编号就是答案了。
如果没有找到就输出-1;
代码
#include<bits/stdc++.h> using namespace std; struct X{ int a,b,g,k; }mt[10005]; int main(){ int n,i,ans=-1,x,y; scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d%d%d%d",&mt[i].a,&mt[i].b,&mt[i].g,&mt[i].k); } scanf("%d%d",&x,&y); for(i=n;i>=1;i--){ if(mt[i].a<=x&&x<=mt[i].a+mt[i].g&&mt[i].b<=y&&y<=mt[i].b+mt[i].k){ ans=i; break; } } cout<<ans; return 0; }