https://atcoder.jp/contests/code-festival-2017-qualc/tasks/code_festival_2017_qualc_c
目標が達成可能かどうかは、s から ‘x’ を取り除いてできる文字列が回文であるかどうかで判定できる。 以後、目標が達成可能な場合を考える。
s の ‘x’ でない文字列のうち左から i 番目の文字を とする。(i = 1,…,m とする)
を と の間にある ‘x’ の個数とする。 を の前にある ‘x’ の数、 を の後にある ‘x’ の数と拡張しておく。
s = “xabxa” の時は、cs = [‘a’, ‘b’, ‘a’], ds = [1,0,1,0] である。
‘x’ を挿入する操作は、ds の一つの数字を +1 することに相当する。ds が左右対称となった時文字列が回文になるから、 答えは l = length (ds) として で求められる。
https://atcoder.jp/contests/code-festival-2017-qualc/submissions/32267860