#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int MAX = 101;
struct Move {
int x, y;
};
Move mv[4] = { {1,0}, {0,-1}, {-1,0}, {0,1} };
int main(void) {
int n;
int visited[MAX][MAX];
cin >> n;
for (int i = 0; i < n; i++) {
int x, y, d, g;
cin >> x >> y >> d >> g;
vector<int> dir;
dir.push_back(d);
for (int k = 0; k < g; k++) {
vector<int> temp = dir;
for (int j = temp.size() - 1; j >= 0; j--) {
dir.push_back((temp[j] + 1) % 4);
}
}
visited[x][y] = 1;
for (int k = 0; k < dir.size(); k++) {
x += mv[dir[k]].x;
y += mv[dir[k]].y;
if (0 <= x && x < MAX && 0 <= y && y < MAX)
visited[x][y] = 1;
}
}
int answer = 0;
for (int i = 0; i < MAX; i++) {
for (int j = 0; j < MAX; j++) {
if (visited[i][j]==1 && visited[i][j + 1]==1 && visited[i + 1][j]==1 && visited[i + 1][j + 1]==1)
answer++;
}
}
cout << answer << endl;
return 0;
}
'백준 알고리즘 > 시뮬레이션' 카테고리의 다른 글
백준 5532번 C++ (0) | 2019.08.28 |
---|---|
백준 2164번 C++ (0) | 2019.08.28 |
백준 14503번 C++ (0) | 2019.08.28 |
백준 2455번 C++ (0) | 2019.08.26 |
백준 14499번 C++ (0) | 2019.04.07 |