position exclusive outputs at the bottom jobs

+ slight refactor
trivial, fruitful optimization for node placement

remember previous crossing lines/travel costs rather than re-computing
them on every iteration