P1003-铺地板
题目:传送门
因为是简单模拟题目,所以开始直接模拟,然后发现是0分!思考了下,发现其实就是求点是否在范围内。因为覆盖,后面会覆盖前面的点,所以从后面往前面查询是否在范围内就OK了,在直接输出然后return,否则输出-1.
AC代码:
#include<bits/stdc++.h>
using namespace std;
int a[100000][5];
int main()
{
int count,x,y,n,m;
scanf("%d",&count);
for(int i=0;i<count;i++)//保存各个范围
{
scanf("%d%d%d%d",&a[i][0],&a[i][1],&n,&m);
a[i][2]=a[i][0]+n;
a[i][3]=a[i][1]+m;
}
scanf("%d%d",&n,&m);
for(int i=count-1;i>=0;i--)//查看是否在范围内
{
if(n>=a[i][0]&&n<=a[i][2]&&m>=a[i][1]&&m<=a[i][3])
{
printf("%d\n",i+1);
return 0;
}
}
printf("-1\n");
return 0;
}