题解 | #铺地毯#
铺地毯
https://ac.nowcoder.com/acm/problem/16593
我所用解法的核心:判断(x,y)是否在毯子的范围内,如果在,则更新color(即所指定点所覆盖的毯子编号),如果不在,则不用管
#include <iostream> using namespace std; int a[10100], b[10100], g[10100], k[10100]; //记录每个毯子的左下角坐标及长和宽 int n; //毯子的数量 int x, y; //被覆盖点的坐标 int main(void) { cin >> n; int color = 0; //记录被覆盖点现在铺着哪块毯子 //输入a,b,j,k for(int i = 1; i <= n; i++) cin >> a[i] >> b[i] >> g[i] >> k[i]; cin >> x >> y; //遍历每个毯子 for(int i = n; i >= 1; i--) { //如果x、y在毯子覆盖的范围内,则更新覆盖点的毯子编号 if(x >= a[i] && x <= a[i]+g[i] && y >= b[i] && y <= b[i]+k[i]) { color = i; break; } } cout << color << endl; return 0; }