>>186

DataInputStreamがデータ一周なめるだけで15分の大半を消費しね?
ファイル処理の再帰が不用意に一段深くなるだけでアウトになりかねない。(時間制限的に)

バイナリレベルでファイル分割->ソート(一発メモリ上ソート)->マージ
上の流れならいけると思う。
DataInputStreamを最低2周させる必要がある。
ファイル分割以降の処理をCPUコア数で並行処理できても、
最後のマージを工夫しないと結構きついかな。