//https://www.acmicpc.net/problem/15685 #include <iostream> | |
#include <vector> | |
using namespace std; | |
#define right 0 | |
#define up 1 | |
#define left 2 | |
#define down 3 | |
int dy[4]={0,-1, 0, 1}; | |
int dx[4]={1, 0,-1, 0}; | |
bool map[101][101]; | |
int main(){ | |
int N; | |
cin >> N; | |
int cnt=0; | |
for(int i=0; i<N; i++){ | |
int x, y, d, g; | |
cin >> x >> y >> d >>g; | |
map[y][x]=1; | |
map[y+dy[d]][x+dx[d]]=1; | |
vector<int> st; | |
st.push_back(d); | |
st.push_back(d); | |
int tmpy=y+dy[d]; | |
int tmpx=x+dx[d]; | |
int l=1; | |
for(int ge=1; ge<=g; ge++){ | |
for(int j=l; j>0; j--){ | |
int nd=(st[j]+1)%4; | |
int ny=tmpy+dy[nd]; | |
int nx=tmpx+dx[nd]; | |
map[ny][nx]=1; | |
st.push_back(nd); | |
tmpy=ny; | |
tmpx=nx; | |
} | |
l=l<<1; | |
} | |
} | |
for(int i=0; i<100; i++){ | |
for(int j=0; j<100; j++){ | |
if(map[i][j] && map[i][j+1] && map[i+1][j] && map[i+1][j+1]) | |
cnt++; | |
} | |
} | |
cout << cnt; | |
} |
'알고리즘 문제 풀이 > 1DP_과제(~180615)' 카테고리의 다른 글
180423_2747_피보나치 수 (0) | 2018.04.23 |
---|---|
180418_15683_감시 (0) | 2018.04.18 |
180416_8958_OX퀴즈 (0) | 2018.04.16 |
180414_2098_외판원 순회 (0) | 2018.04.14 |
180412_15552_빠른 A+B (0) | 2018.04.12 |