問題一覧 > 通常問題

No.2648 [Cherry 6th Tune D] 一次元の馬

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 140
作問者 : 👑 Kazun / テスター : hirayuu_yc
0 ProblemId : 9848 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-02-23 21:36:30

問題文

数直線上に NN 頭の馬がいる. これらの馬は 1,2,,N1,2, \dots, N と番号が付けられている.

最初, 馬 ii は座標 AiA_i にいる.

チェリーちゃんが笛を鳴らすと, NN 頭の馬は同時に以下の行動を行う.

  • 笛が鳴ったとき, 馬 ii が座標 xx にいるとする. このとき, 馬 ii は座標 (x+i)(x+i) に移動する.

チェリーちゃんが 00 回以上の任意の回数だけ笛を鳴らすとき, 以下を満たすようなことはあり得るか? あり得るならば, そのような状況になるまでにチェリーちゃんが鳴らす笛の回数の最小値を求めよ.

  • ii がいる座標を XiX_i とする. このとき, X1<X2<<XN1<XNX_1 \lt X_2 \lt \dots \lt X_{N-1} \lt X_N を満たす.

制約

  • 1T1051 \leq T \leq 10^5.
  • 各テストケースに対する制約.
    • 2N2×1052 \leq N \leq 2 \times 10^5.
    • 0Ai109(1iN)0 \leq A_i \leq 10^9 \quad (1 \leq i \leq N).
  • テストファイルに対する制約.
    • TT 個のテストケースにおける NN の総和は 2×1052 \times 10^5 以下である.
  • 入力は全て整数である.

入力

TT
Testcase1{\rm Testcase}_1
Testcase2{\rm Testcase}_2
\vdots
TestcaseT{\rm Testcase}_T
なお, 各テストケースは以下の形式で与えられる.
NN
A1A_1 A2A_2 \cdots ANA_N

出力

出力は TT 行からなる. 第 t (1tT)t~(1 \leq t \leq T) 行目には, 第 tt テストケースに対する解答を以下の形式で出力せよ.

  • いくら笛を鳴らしても条件を満たさないならば, -1 を出力せよ. 存在するならば, 条件を満たすまでに笛を鳴らす回数の最小値を整数で出力せよ.

最後に改行も忘れないこと.

サンプル

サンプル1
入力
4
3
3 1 2
5
1 2 3 4 5
4
46 46 46 46
10
886822852 554802233 259460418 345136263 8466085 424914285 852474622 856826548 201867 777749594
出力
3
0
1
856624682

  • [第 11 テストケース] チェリーちゃんが 33 回笛を鳴らすとする. このとき, 各馬は次のように移動する.
    • 11 回目の笛が鳴ると, 馬 11 は座標 33 から座標 44 に, 馬 22 は座標 11 から座標 33 に, 馬 33 は座標 22 から座標 55 へ移動する.
    • 22 回目の笛が鳴ると, 馬 11 は座標 44 から座標 55 に, 馬 22 は座標 33 から座標 55 に, 馬 33 は座標 55 から座標 88 へ移動する.
    • 33 回目の笛が鳴ると, 馬 11 は座標 55 から座標 66 に, 馬 22 は座標 55 から座標 77 に, 馬 33 は座標 88 から座標 1111 へ移動する.
    33 回笛を鳴らした後, X1=6,X2=7,X3=11X_1=6, X_2=7, X_3=11 で, X1<X2<X3X_1 \lt X_2 \lt X_3 を満たす. また, 笛を鳴らす回数が 33 回未満だと X1<X2<X3X_1 \lt X_2 \lt X_3 は満たさない. よって, 33 回が正解である.

  • [第 22 テストケース] 笛を鳴らさずとも X1<X2<<XNX_1 \lt X_2 \lt \dots \lt X_N となっている可能性がある.
  • [第 33 テストケース] X1=X2=X3=X4X_1=X_2=X_3=X_4 は条件を満たさないことに注意せよ.

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。