Ковер / Л Гу P1003

Для того, чтобы подготовить специальную церемонию награждения, организатор в прямоугольной области места (можно рассматривать в качестве первого квадранта прямоугольной системы координат), покрытого с некоторыми из прямоугольного ковра. В общей сложности п ковров, пронумерованы от 1 до п. В настоящее время в соответствии с этим порядком возрастания номеров ковра последовательно заложен параллельно оси, после укладки ковра накладывается поверх ранее уложенный ковер.

После завершения возложения ковра, организаторы хотели бы знать, ковровое покрытие, закрывающее верхний этаж числа точек. Примечание: точка на границе прямоугольника, а четыре вершину ковра можно считать покрыт ковром.

вход

输入共 n+2 行。

第一行,一个整数 n,表示总共有 n 张地毯。

接下来的 n 行中,第 i+1 行表示编号 i 的地毯的信息,包含四个正整数 a,b,g,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标 (a,b) 以及地毯在 x 轴和 y 轴方向的长度。

第 n+2 行包含两个正整数 x 和 y,表示所求的地面的点的坐标 (x,y)。

Выход

输出共 1 行,一个整数,表示所求的地毯的编号;若此处没有被地毯覆盖则输出-1

Пример ввода 1

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

Пример вывода 1

3

Пример ввода 2

3
1 0 2 3
0 2 3 3
2 1 3 3
4 5

Пример вывода 2

-1

Описание / Советы

IMG

решение проблемы

x[i] y[i] xx[i] yy[I]
分别记录这块地毯x轴左端 y轴下端 x轴右端 y周上端
记录下来,给出x,y后
从后往前搜,这样保证了搜到的是最上面的地毯

код

#include<cstdio>
using namespace std;
const int N = 1e4 + 10;

int n, x[N], y[N], xx[N], yy[N];

int main(){
    scanf("%d", &n);
    for(int i = 1; i <= n; i++){
        scanf("%d%d%d%d", &x[i], &y[i], &xx[i], &yy[i]);
        xx[i] += x[i], yy[i] += y[i];
    }
    int a, b;
    scanf("%d%d", &a, &b);
    for(int i = n; i >= 1; i--){
        if(x[i] <= a && xx[i] >= a && y[i] <= b && yy[i] >= b){
            printf("%d\n", i);
            return 0;
        }
    }
    printf("-1\n");
    return 0;
}

рекомендация

отwww.cnblogs.com/Little-Turtle--QJY/p/12386774.html