#ahc021a. [ahc021_a]Pyramid Sorting

[ahc021_a]Pyramid Sorting

問題文

N(N+1)/2N(N+1)/2 個のボールが下図のように NN 段のピラミッド型に並んでいる。 ピラミッドの頂上のボールの座標を (0,0)(0, 0) とし、x(0leqxleqN1)x (0\\leq x\\leq N-1) 段目の左から y(0leqyleqx)y (0\\leq y\\leq x) 個目のボールの座標を (x,y)(x,y) とする。

各ボールには 00N(N+1)/21N(N+1)/2-1 の数字が書かれており、各ボールの数字は全て異なる。 一回の操作で6方向に隣接する2つのボールを入れ替えることが出来る。 ここで、座標 (x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2) にあるボールは以下のいずれかの条件を満たす場合に6方向に隣接している。

  • x1=x21x_1=x_2-1 かつ y1=y21y_1=y_2-1
  • x1=x21x_1=x_2-1 かつ y1=y2y_1=y_2
  • x1=x2x_1=x_2 かつ y1=y21y_1=y_2-1
  • x1=x2x_1=x_2 かつ y1=y2+1y_1=y_2+1
  • x1=x2+1x_1=x_2+1 かつ y1=y2y_1=y_2
  • x1=x2+1x_1=x_2+1 かつ y1=y2+1y_1=y_2+1

この操作を最大 1000010000 回繰り返すことで、最下層を除くどのボール (x,y)(0leqxleqN2,0leqyleqx)(x,y) (0\\leq x\\leq N-2, 0\\leq y\\leq x) も自身の直下にある2つのボール (x+1,y),(x+1,y+1)(x+1,y), (x+1,y+1) よりも小さい数字となるようにしたい。 出来るだけ操作回数が少なくなるような操作列を求めて欲しい。

得点

操作回数を KK、操作終了後に条件に違反しているボールのペアの数を EE とする。 EE(x,y)(x,y)(x+1,y)(yiny,y+1)(x+1,y') (y'\\in\\{y,y+1\\}) の組であって、(x,y)(x,y) のボールの数字の方が (x+1,y)(x+1,y') のボールの数字より大きいようなものの総数である。

このとき、以下のスコアが得られる。

  • E=0E=0 の場合、1000005K100000-5K
  • E>0E>0 の場合、5000050E50000-50E

テストケースは全部で 150 個あり、各テストケースの得点の合計が提出の得点となる。 一つ以上のテストケースで不正な出力や制限時間超過をした場合、提出全体の判定がWA