時は過ぎて太郎君は高校生になりました。 大学生だったお兄さんの影響も受け、コンピューターサイエンスに興味を持ち始めました。 太郎君はコンピューターサイエンスの教科書を読み進め、「最長増加部分列問題」という有名問題があることを知りました。太郎君はこの問題のことを理解しましたが、自分でも類似問題が作れないものかと気になりました。 そこで太郎君は試行錯誤の結果に次のような問題を作りました。
例えば、数列Aが{5,-4,10,-3,8}の場合を考えてみる。
区切りの位置を表す数列Cを用意し、C={2,4}とする。
このとき、数列Aは(5,-4),(10,-3),(8)の部分に分かれ、これらの内部を足し合わせるとそれぞれ1,7,8となり、出来上がる数列Bは{1,7,8}となる。
太郎君はこの問題について"最長増加列問題"と名付け、これを解くアルゴリズムも考えました。
そして社会人になったあなたにチェックをしてほしいと連絡をしました。
あなたの仕事は、成長した太郎君の作った問題を解くプログラムを作ることです。
チェックするのが仕事なので、m-1個の区切りの位置も出力します。
なお、最適なmに対してこのような区切り方が複数考えられる場合もありますが、このmが正しく出力されていれば、考えられるもののうち一つを出力すればよいです。
改行区切りでn+1個の整数が与えられる。
n
A1
A2
...
An
1≤n≤4000
|Ai|≤ 108
m
C1 C2 .. Cm-1
3 1 2 4
3 1 2
もともと増加列なので、すべての場所に区切りを入れればよい
3 2 2 2
2 1
2 2 2は増加列でないので、3つに分割することはできない
3 4 2 1
1 (空行)
どう分割しても増加列にはならないため、分割をしない