首页 > 试题广场 >

铺地毯

[编程题]铺地毯
  • 热度指数:270 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}本题转译自 [NOIP2011 提高组] 铺地毯。
\hspace{15pt}为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。
\hspace{15pt}一共有 n 张地毯,编号从 1n ,第 i 张地毯使用一个四元组 \left( a_i, b_i, g_i, k_i \right) 表示,代表地毯的左下角位于 \left( a_i, b_i \right),地毯在 x 轴和 y 轴方向的长度分别为 g_ik_i,右上角坐标为 \left( a_i+g_i, b_i+k_i \right)。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。
\hspace{15pt}地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。

输入描述:
\hspace{15pt}第一行输入一个整数 n \left( 1 \leqq n \leqq 10^4 \right),表示地毯的数量。
\hspace{15pt}此后 n 行,第 i 行输入四个整数 a_i, b_i, g_i, k_i \left( 0 \leqq a_i, b_i, g_i, k_i \leqq 10^5 \right),表示第 i 张地毯的左下角坐标、地毯在 x 轴的延伸长度、在 y 轴的延伸长度。
\hspace{15pt}最后一行输入两个整数 x, y \left( 0 \leqq x, y \leqq 10^5 \right),表示所求的地面的点的坐标。


输出描述:
\hspace{15pt}在一行上输出一个整数,代表所求坐标最上面的那张地毯的编号;如果没有被地毯覆盖,则直接输出 -1
示例1

输入

3
1 0 2 3
0 2 3 3
2 1 3 3
2 2

输出

3

说明

\hspace{15pt}在这个样例中,如下图所示,一号地毯用实线表示,二号地毯用虚线表示,三号地毯用双实线表示,覆盖点 \left( 2, 2 \right) 的最上面的地毯是三号地毯。

头像 Ldh1315109
发表于 2025-11-07 16:55:37
def solve(testcase): n = II() res = -1 A = [] for _ in range(n): a, b, g, k = MI() A.append((a, b, g, k)) x 展开全文
头像 Sk1Em6er
发表于 2025-12-07 21:18:06
#include <stdio.h> //利用结构体解决 typedef struct { int a, b, g, k; } Carpet; int main() { int n; scanf("%d", &n); 展开全文
头像 星璇Xx
发表于 2025-11-16 19:12:48
#include<bits/stdc++.h> using namespace std; const int N = 1e4 + 10; struct pet{ //地毯结构体 int a,b,g,k; }p[N]; int main(){ int n; cin >> 展开全文
头像 Drink0318
发表于 2025-12-08 10:17:37
import sys flag = 0 # 读取所有输入行并转换为迭代器,方便逐行读取(避免一次性加载所有行,节省内存) # sys.stdin.read() 读取所有输入内容,splitlines() 按换行符分割成行列表,iter() 转为迭代器 data = iter(sys.stdin. 展开全文
头像 自由的风0450
发表于 2025-11-19 17:48:56
#include <iostream> #include<stack> using namespace std; struct Carpet{ int id; int x1,y1; int x2,y2; }; int main() { int 展开全文
头像 bb凯
发表于 2025-11-30 11:43:10
import sys n = int(input()) a = [tuple(map(int, input().split())) for i in range(n)] x,y = map(int, input().split()) t = -1 for j in range(n): if 展开全文
头像 lotusor
发表于 2025-12-02 21:04:40
import sys n = int(input()) list0 = [list(map(int, input().split())) for i in range(n)] x,y = map(int, input().split()) t = -1 for j in range(n): 展开全文