洛谷P1003 [NOIP2011提高組] 鋪地毯 視訊題解

廣東清遠OIer尚賢發表於2021-01-03

洛谷P1003 [NOIP2011提高組] 鋪地毯 視訊題解

洛谷P1003 [NOIP2011提高組] 鋪地毯 視訊題解

題目描述
為了準備一個獨特的頒獎典禮,組織者在會場的一片矩形區域(可看做是平面直角座標系的第一象限)鋪上一些矩形地毯。一共有 nn 張地毯,編號從 11 到 nn。現在將這些地毯按照編號從小到大的順序平行於座標軸先後鋪設,後鋪的地毯覆蓋在前面已經鋪好的地毯之上。

地毯鋪設完成後,組織者想知道覆蓋地面某個點的最上面的那張地毯的編號。注意:在矩形地毯邊界和四個頂點上的點也算被地毯覆蓋。

輸入格式
輸入共 n + 2n+2 行。

第一行,一個整數 nn,表示總共有 nn 張地毯。

接下來的 nn 行中,第 i+1i+1 行表示編號 ii 的地毯的資訊,包含四個整數 a ,b ,g ,ka,b,g,k,每兩個整數之間用一個空格隔開,分別表示鋪設地毯的左下角的座標 (a, b)(a,b) 以及地毯在 xx 軸和 yy 軸方向的長度。

第 n + 2n+2 行包含兩個整數 xx 和 yy,表示所求的地面的點的座標 (x, y)(x,y)。

輸出格式
輸出共 11 行,一個整數,表示所求的地毯的編號;若此處沒有被地毯覆蓋則輸出 -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
說明/提示
【樣例解釋 1】

如下圖,11 號地毯用實線表示,22 號地毯用虛線表示,33 號用雙實線表示,覆蓋點 (2,2)(2,2) 的最上面一張地毯是 33 號地毯。
在這裡插入圖片描述

【資料範圍】

對於 30%30% 的資料,有 n \le 2n≤2。
對於 50%50% 的資料,0 \le a, b, g, k \le 1000≤a,b,g,k≤100。
對於 100%100% 的資料,有 0 \le n \le 10^40≤n≤10
4
, 0 \le a, b, g, k \le {10}^50≤a,b,g,k≤10
5

noip2011 提高組 day1 第 11 題。

#include<bits/stdc++.h>
using namespace std;
//微信請加 14808098 一起快樂學習資訊學奧賽
const  int N = 10005;
int a[N],b[N],c[N],d[N];
int ans = -1,x,y;
int main() {
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i]>>c[i]>>d[i];
	}
	cin>>x>>y;
	for(int i=1;i<=n;i++){
		if( (x>=a[i]&&x<=(a[i]+c[i]))  && ( y>=b[i]&&y<=(b[i]+d[i]) )  ){
			ans = i;
		}
	}
	cout<<ans<<endl;
	
	return 0;
}

相關文章