AOJ1168 ぐらぐら

未実装
方針
地面に接しているブロックを根として、有向木をつくる。あるノードに対して、その全ての子ノードの重心が自分のx座標の範囲に収まるかどうかを確かめながら再帰する。この条件を満たすとき、得られた重心座標を親ノードに返すが、満たせなかった場合 -1 を返す。-1が一度でも帰ってきたら UNSTABLE と判断する。最後まで 重心座標が得られたら STABLE と判断できる。

有向木に落としこむところが難点?木を作る際、各ノード(つまり各ブロック)に対して重心を求めておくと良さそう。