function parent(dir) { p = match(dir, "/[^/]+$"); return substr(dir, 1, p-1); } /\$ cd \// { cwd = "/"; next; } /\$ cd \.\./ { cwd = parent(cwd); next; } /\$ cd/ { cwd = cwd "/" $3; } /^[0-9]+/ { for (dir = cwd; dir != ""; dir = parent(dir)) { dirs[dir] += $1; } } END { for (dir in dirs) { if (dirs[dir] > 100000) continue; sum += dirs[dir]; } print sum; used = dirs["/"]; unused = 70000000 - used; needed = 30000000 - unused; min = used; for (dir in dirs) { if (dirs[dir] < needed) continue; if (dirs[dir] < min) min = dirs[dir]; } print min; }