在线等
代码:
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 1005;
bool grid[MAXN][MAXN];
bool is(int x, int y) {
return x >= 0 && y >= 0 && x < MAXN && y < MAXN;
}
int calculate() {
int ans= 0;
for (int i = 0; i < MAXN; i++) {
for (int j = 0; j < MAXN; j++) {
if (grid[i][j]) {
if (!is(i - 1, j) || !grid[i - 1][j]) {
ans++;
}
if (!is(i + 1, j) || !grid[i + 1][j]) {
ans++;
}
if (!is(i, j - 1) || !grid[i][j - 1]) {
ans++;
}
if (!is(i, j + 1) || !grid[i][j + 1]) {
ans++;
}
}
}
}
return ans;
}
int main() {
int t;
cin >> t;
while (t--) {
int n, m;
cin >> n >> m;
for (int i = 0; i < MAXN; i++) {
for (int j = 0; j < MAXN; j++) {
grid[i][j] = false;
}
}
int lastx = 0, lasty=0;
for (int i = 0; i < n; i++) {
int x, y;
cin >> x >> y;
lastx += x;
lasty += y;
for (int a = lastx; a < lastx + m; a++) {
for (int b = lasty; b < lasty + m; b++) {
grid[a][b] = true;
}
}
}
cout <<calculate() << endl;
}
return 0;
}