Skip to content

Commit 5ed2fa1

Browse files
committed
18808 solved
1 parent 1d86bd1 commit 5ed2fa1

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import sys
2+
3+
N, M, K = map(int, sys.stdin.readline().split())
4+
paper = [[0 for _ in range(M)] for _ in range(N)]
5+
6+
7+
def is_valid(r, c, sticker):
8+
if r + len(sticker) > N or c + len(sticker[0]) > M:
9+
return False
10+
for _r in range(len(sticker)):
11+
for _c in range(len(sticker[0])):
12+
if sticker[_r][_c] == 1 and paper[r + _r][c + _c] == 1:
13+
return False
14+
return True
15+
16+
17+
def turn_clockwise(sticker):
18+
R, C = len(sticker), len(sticker[0])
19+
turned = [[0 for _ in range(R)] for _ in range(C)]
20+
for r in range(R):
21+
for c in range(C):
22+
turned[c][R - r - 1] = sticker[r][c]
23+
return turned
24+
25+
26+
def put_sticker(r, c, sticker):
27+
for _r in range(len(sticker)):
28+
for _c in range(len(sticker[0])):
29+
if sticker[_r][_c] == 1:
30+
paper[r + _r][c + _c] = sticker[_r][_c]
31+
32+
33+
def search(sticker):
34+
for r in range(N):
35+
for c in range(M):
36+
if is_valid(r, c, sticker):
37+
return r, c
38+
return -1, -1
39+
40+
41+
for i in range(K):
42+
R, C = map(int, sys.stdin.readline().split())
43+
sticker = [list(map(int, sys.stdin.readline().split())) for _ in range(R)]
44+
turn_cnt, flag = 0, False
45+
while turn_cnt < 4:
46+
r, c = search(sticker)
47+
if r < 0:
48+
sticker = turn_clockwise(sticker)
49+
turn_cnt += 1
50+
else:
51+
flag = True
52+
break
53+
if flag:
54+
put_sticker(r, c, sticker)
55+
56+
answer = 0
57+
for r in range(N):
58+
for c in range(M):
59+
if paper[r][c] == 1:
60+
answer += 1
61+
print(answer)

0 commit comments

Comments
 (0)