|
123456789101112131415161718192021222324252627282930 |
- import collections
- import itertools
-
-
- text = open(0).read()
-
-
- path = []
- dirs = collections.defaultdict(int)
- for line in map(str.split, text.splitlines()):
- match line:
- case ('$', 'cd', '..'):
- path.pop()
- case ('$', 'cd', loc):
- path.append(loc)
- case ('$', 'ls'):
- pass
- case ('dir', _):
- pass
- case (size, _):
- for leg in itertools.accumulate(path):
- dirs[leg] += int(size)
-
-
- ans1 = sum(size for size in dirs.values() if size <= 100_000)
- print(ans1)
-
- free = 70_000_000 - dirs['/']
- ans2 = min(size for size in dirs.values() if free + size >= 30_000_000)
- print(ans2)
|