配点 : 1200 点
問題文
高橋君は魔法使いです。高橋君は魔法をかけることで、M 項からなる数列 (a1,a2,...,aM) を、si を a1∼ai の和とした数列 (s1,s2,...,sM) に変えることができます。
ある日、高橋君は M 項からなる数列を N 個もらい、順番に A1,A2,...,AN と名付けました。さらに、高橋君は魔法をかけることで、辞書順で比較した際に A1<A2<...<AN となるようにしようと思いました。
高橋君が一つの数列を選んでそれに魔法をかける操作を 1 回の魔法とします。このとき、高橋君が目標を達成するために必要な魔法の最小回数を求めてください。
ただし、M 項からなる 2 つの数列 a=(a1,a2,...,aM),b=(b1,b2,...,bM) が辞書順で a<b であるとは、ある i(1≤i≤M) で aj=bj(1≤j<i) かつ ai<bi が成り立つことを指します。
制約
- 1≤N≤103
- 1≤M≤103
- Ai の j 項目を A(i,j) としたとき、 1≤A(i,j)≤109
部分点
- 200 点分のテストケースでは、104 回以下の回数で目標を達成し、かつ、どの項も 109 以下となるようにすることができる。
- 別の 800 点分のテストケースでは、A(i,j)≤80 が成立する。
入力
入力は以下の形式で標準入力から与えられる。
N M
A(1,1) A(1,2) ... A(1,M)
A(2,1) A(2,2) ... A(2,M)
:
A(N,1) A(N,2) ... A(N,M)
出力
高橋君がかける魔法の最小回数を出力せよ。ただし、高橋君が目標を達成できないならば、代わりに -1
を出力せよ。
入力例1
3 3
2 3 1
2 1 2
2 6 3
出力例1
1
A2 に対して 1 回魔法をかけることで、A2=(2,3,5) となり、高橋君は目標を達成できます。
入力例2
3 3
3 2 10
10 5 4
9 1 9
出力例2
-1
この場合、何回魔法をかけても高橋君は目標を達成できません。
入力例3
5 5
2 6 5 6 9
2 6 4 9 10
2 6 8 6 7
2 1 7 3 8
2 1 4 8 3
出力例3
11