備忘録代わりに精進記録を載せていくつもりです。割った値を求めてください。全ての数字について、その数字より左側に自分より大きいものが存在する、もしくは右側に小さいものが存在する例えば、{1,4,3}という数列について考えた時、4の右側に3が存在しているので、4は条件を満たしていますが、1より小さい数字は1の右側に存在していないので、この数列は上の条件を満たしていません。逆に、{3,4,1}という数列は上の条件を満たしています。先輩+解説の解法になります。自分はそれを実装しただけです。重複がない場合を考えます。上の条件を満たすものを考えるのは見通しが悪いので、満たさないものを考え、全体から引けばよいです。数列のうち少なくとも1つ、左側には全て自身以下の数字が、右側には全て自身以上の数字が並んでいる数字があるということです(最初の条件と区別するため、条件Xと呼ぶことにします)。これを包除原理を用いて求めます。二つが条件Xを満たすとします。これを踏まえて、以下のようなDPを考えます。番目の数字はどちらも条件Xを満たすことに注目すると、となります。