AcWing 1749. 阻挡广告牌 II(暴力模拟)
原题链接
简单
寻找未被盖到的坐标的最大最小值
C++ 代码
#include <iostream>
using namespace std;
const int N = 2e3 + 10;
int s[2][4];
int g[N][N];
int x1 = N, y1 = N, x2 = -N, y2 = -N;
int main()
{
for (int i = 0; i < 2; ++ i)
for (int j = 0; j < 4; ++ j)
cin >> s[i][j];
for (int k = 0; k < 2; ++ k)
for (int i = s[k][0]; i < s[k][2]; ++ i)
for (int j = s[k][1]; j < s[k][3]; ++ j)
g[i + 1000][j + 1000] = k + 1;// + 1000防止为负数,割草机广告坐标全为1,饲料广告位2
for (int i = s[0][0]; i < s[0][2]; ++ i)
for (int j = s[0][1]; j < s[0][3]; ++ j)
if (g[i + 1000][j + 1000] == 1)//寻找未被盖到的坐标的最大最小值
{
x1 = min(x1, i);
x2 = max(x2, i);
y1 = min(y1, j);
y2 = max(y2, j);
}
if (x2 >= x1 && y2 >= y1) cout << (x2 - x1 + 1) * (y2 - y1 + 1);
else cout << 0;
return 0;
}