题意:有n张地毯,后铺的在最上面,给你一个点,问这个点最上面的地毯的编号是什么
贪心方法:因为在最上面的地毯肯定在后面,所以我们只需要倒着找就可以了
代码:
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int maxn=1e5+10; typedef struct{ int a,b,x,y; }place; int main() { int n; place a[maxn]; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d%d%d%d",&a[i].a,&a[i].b,&a[i].x,&a[i].y); int xx,yy; scanf("%d%d",&xx,&yy); int flag=-1; for(int i=n-1;i>=0;i--) { if(xx>=a[i].a&&xx<=a[i].a+a[i].x&&yy>=a[i].b&&yy<=a[i].b+a[i].y) { flag=i+1; break; } } cout<<flag<<endl; return 0; }