思路:
看到这题我有想过前缀和、差分,但是后来发现,这题其实是个思维题,贪心也行吧。
从先存完数据,然后从后往前枚举,遇到第一个囊括询问的点时就输出是第几个毛毯接着退出程序。
Code:
#include<bits/stdc++.h> #define js ios::sync_with_stdio(false);cin.tie(0);cout.tie(0) using namespace std; struct node{ int x,y,shang,you; }q[10005]; int main() { js; int n,x,y; cin>>n; for(int i=1;i<=n;++i) cin>>q[i].x>>q[i].y>>q[i].you>>q[i].shang; cin>>x>>y; for(int i=n;i;--i) { if(x<q[i].x||y<q[i].y) continue; if(x-q[i].x<=q[i].you&&y-q[i].y<=q[i].shang) { cout<<i<<"\n"; return 0; } } }