diff --git "a/live11/test117/\353\254\270\354\240\2341/\353\260\261\355\225\234\352\262\260.py" "b/live11/test117/\353\254\270\354\240\2341/\353\260\261\355\225\234\352\262\260.py" new file mode 100644 index 00000000..f0114bda --- /dev/null +++ "b/live11/test117/\353\254\270\354\240\2341/\353\260\261\355\225\234\352\262\260.py" @@ -0,0 +1,25 @@ +import sys + +def main(): + input = sys.stdin.readline + + N = int(input()) + towers = list(map(int, input().split())) + stack = [] + result = [] + + for i in range(len(towers)): + while stack and towers[stack[-1]] < towers[i]: + stack.pop() + + if stack: + result.append(stack[-1] + 1) + else: + result.append(0) + + stack.append(i) + + print(*result) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git "a/live11/test117/\353\254\270\354\240\2342/\353\260\261\355\225\234\352\262\260.py" "b/live11/test117/\353\254\270\354\240\2342/\353\260\261\355\225\234\352\262\260.py" new file mode 100644 index 00000000..86d3d8ff --- /dev/null +++ "b/live11/test117/\353\254\270\354\240\2342/\353\260\261\355\225\234\352\262\260.py" @@ -0,0 +1,35 @@ +import sys +from collections import defaultdict +sys.setrecursionlimit(10**6) + + +def main(): + input = sys.stdin.readline + + N = int(input()) + graph = defaultdict(list) + + for _ in range(N-1): + a, b = map(int, input().split()) + graph[a].append(b) + graph[b].append(a) + + dp = [[0, 0] for _ in range(N+1)] + visited = [False] * (N+1) + + def dfs(node): + visited[node] = True + dp[node][0] = 0 + dp[node][1] = 1 + + for child in graph[node]: + if not visited[child]: + dfs(child) + dp[node][0] += dp[child][1] + dp[node][1] += min(dp[child][0], dp[child][1]) + + dfs(1) + print(min(dp[1][0], dp[1][1])) + +if __name__ == '__main__': + main() \ No newline at end of file