省エネなコードを書きたい!

競プロについて書いたりします

気ままに考察/CODE FESTIVAL 2014 予選B -C/錬金術士

問題はこちら。
atcoder.jp
【解法】
 ある英大文字Xについて考えられるのは
① S1のみに存在している。
② S2のみに存在している。
③ S1、S2の両方に存在している。
の3通りである。①、②の場合には必ず片方から使う必要があるので厄介なのは③である。ここではS1が使う文字数の上限と下限を考えることで
inf<=N<=supなら構築できる。そうでないならできないと考える。すなわち直接S1から使う文字数を考えていてはキリがないかなぁという思考になるわけである。
 Xについてinf=max(0,S3にある数-S2にある数)、
sup=min(S1にある数,S3にある数)でありこれをA〜Zで纏めればOK。
【コード】
atcoder.jp
【感想】
久しぶりにこんな感じの問題(直接は難しいから上限、下限を考える)。文字列は苦手......