Refactored bruteforcer to support multiple strategies.
Give more meaningful output.
Fixed incorrect L-1 DPA bounds to L.
Typo.
Fixed more instances of L-1 vs L vs L+1 and an embarassing typo.
Optimal solution is not 0-competitive, of course.
Presumably improved the typographical output by using microtype.
Improved error handling in the bruteforcer.
Runner to gather results across multiple set sizes.
WTF I have no idea what I'm doing

...and apparently so does my computer.
Implemented a linearly dependent generator strategy.
Do not attempt to keep more than 2^20 ints in memory.
Python 3 compatibility (since 2.x doesn't support large xranges).
Worked around CPython's retarded limitations of huge ranges.
The runner now tries substantially more parameter cominations.

Lowered the number of attempts per combo.
Well, this is embarassing.
Pulled fixes from final SSC article proofread.
Added a section on offline related work.
Introduction to subset sum.
Capitalization.