This commit is contained in:
2024-05-09 01:10:27 +09:00
3 changed files with 130 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
import sys
input = sys.stdin.readline
N: int # late-init
def partition(L, P):
"""get subdivisions of partition and check is valid of its subdivision"""
half = L // 2
quad = [[], [], [], []]
for i in range(L):
for j in range(L):
if 0 <= i < half:
if 0 <= j < half:
quad[0].append(P[i * L + j])
else:
quad[1].append(P[i * L + j])
else:
if 0 <= j < half:
quad[2].append(P[i * L + j])
else:
quad[3].append(P[i * L + j])
ret = []
for q in quad:
a = not any(q)
b = all(q)
if a:
ret.append((True, 0))
elif b:
ret.append((True, 1))
else:
ret.append((False, half, q))
return ret
def solve(N: int, M: list[int]):
"""main DFS process"""
cnt_0 = 0
cnt_1 = 0
if all(M):
return 0, 1
elif not any(M):
return 1, 0
D = [(N, M)] # stack for DFS
while D:
L, P = D.pop()
parted = partition(L, P)
for p in parted:
if p[0]:
_, cnt = p
if cnt:
cnt_1 += 1
else:
cnt_0 += 1
else:
_, new_L, new_P = p
D.append((new_L, new_P))
return cnt_0, cnt_1
if __name__ == "__main__":
N = int(input())
print(
*solve(N, sum([list(map(int, input().split())) for _ in range(N)], [])),
sep="\n"
)

View File

@@ -0,0 +1,17 @@
import sys
input = sys.stdin.readline
print = sys.stdout.write
N = int(input())
d = dict()
for _ in range(N):
n, t = input().rstrip().split()
if t.startswith("e"):
d[n] = 1
else:
d[n] = 0
x = sorted([k for k, v in d.items() if v == 1])[::-1]
for i in x:
print(i)
print('\n')