久々にE解けた。また3完かと焦ったけどなんとかなった...
A - TLD
後ろから見て、.が出てくるまでを出力
B - Langton's Takahashi
ちょっと実装で沼った(というかバグらせた)。
言われたままを実装すればOK。
C - Perfect Bus
初めの乗客を0人として、乗客数が一番少なくなったときの値(~0までの値になる)を記録しておく。乗客数が一番少なくなったときの人数を0人とすればそれが最初の乗客としてありえる最小の値なので、答えは
(初めの乗客を0人としたときの最後の乗客の人数) + (乗客数が一番少なくなったときの値の絶対値)
となる。
E - Smooth Subsequence
配列v[i]を、「(前から順に見ていって)iが最後となるような部分列の作り方のうち最大の長さ」とし、これに対してセグメントツリーを構築しておく。初めの要素はすべて0である。
さて、a[i]に対して、
v[a[i]] = [ a[i]-d, a[i]+d ]の最大値 + 1
で更新を行う(というかこれをするためのセグ木)。最後まで見終わったあと、vのうちの最大値が答えになる。