36 lines
649 B
Python
36 lines
649 B
Python
|
#!/usr/bin/env python3
|
||
|
from useful import *
|
||
|
|
||
|
m = defaultdict(lambda: 0)
|
||
|
|
||
|
def dirs(d):
|
||
|
return [d[1:l+1] for l in range(len(d))]
|
||
|
|
||
|
def dirstr(d):
|
||
|
return '/'.join(d)
|
||
|
|
||
|
def plus(d, n):
|
||
|
for x in dirs(d):
|
||
|
m[dirstr(x)] += n
|
||
|
|
||
|
def cd(d):
|
||
|
global cur
|
||
|
if d == '/':
|
||
|
cur = [d,]
|
||
|
elif d == '..':
|
||
|
cur = cur[:-1]
|
||
|
else:
|
||
|
cur += [d,]
|
||
|
|
||
|
cur = []
|
||
|
ls = lines(open(0))
|
||
|
for l in ls:
|
||
|
if re.match(r'\$ cd', l):
|
||
|
cd(l.split()[-1])
|
||
|
else:
|
||
|
for n in numbers(l):
|
||
|
plus(cur, n)
|
||
|
|
||
|
print(sum(x for x in m.values() if x <= 100000))
|
||
|
print(sorted(v for v in m.values() if v >= m[''] - 40000000)[0])
|