提交时间:2026-01-04 15:46:23

运行 ID: 81329

#include <iostream> using namespace std; int main() { int n; cin >> n; // 存储地毯信息:a,b,g,k int carpet[10005][4]; // 假设n ≤ 10000 for (int i = 1; i <= n; i++) { cin >> carpet[i][0] >> carpet[i][1] >> carpet[i][2] >> carpet[i][3]; } int x, y; cin >> x >> y; int ans = -1; // 初始化为-1,表示未被覆盖 // 从后往前遍历(因为后铺的在上层) for (int i = n; i >= 1; i--) { int a = carpet[i][0], b = carpet[i][1]; int g = carpet[i][2], k = carpet[i][3]; // 检查点(x,y)是否在当前地毯内(包括边界) if (a <= x && x <= a + g && b <= y && y <= b + k) { ans = i; // 找到最上层覆盖的地毯 break; // 立即退出,因为是从后往前找的第一个 } } cout << ans << endl; return 0; }