P1003题解

发布时间 2023-11-24 22:48:17作者: Xu_dh

简单模拟题。

思路

枚举每一个地毯,因为后面的会覆盖前面的,所以从正序枚举。如果要求的点的坐标在当前地毯上,则将答案赋值为当前地毯编号。

最后输出答案。

那如果这个点没有地毯呢?答案初始设为 \(-1\),这样没有地毯覆盖的话,答案不会改变,这样输出答案就会是 \(-1\)

注意:

  • 记得赋初始值。
  • 后面的两个数 \(g\)\(k\) 是地毯长宽而不是结束点。

AC CODE

#include <bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int a[N],b[N],g[N],k[N];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		scanf("%d%d%d%d",a+i,b+i,g+i,k+i);
	}
	int x,y,ans=-1;
	cin>>x>>y;
	for(int i=1;i<=n;i++){
		if(x>=a[i]&&x<=a[i]+g[i]&&y>=b[i]&&y<=b[i]+k[i])ans=i;
	}
	cout<<ans<<endl;
	return 0;
}