読解も簡単に書きます.
A. Зингер | color
最初は unlock で色は blue.「lock / unlock の変更」「色の変更(unlock のときだけ適用される)」という指示の列が来るのでシミュレーションせよ.
B2. Мониторинг
$n$ 個のペア $(w_i,h_i)$ が与えられる.$(i,j)$ であって,$w_i=w_j, w_i=h_j, h_i=w_j, h_j=h_j$ などのうち少なくともひとつが成り立つものを数えよ.
$w_i=w_j, w_i=h_j, h_i=w_j, h_j=h_j$ を全部数えたあとで,複数に使えるパターンを引きます.
C. Симметричный амфитеатр
直線 $x=y$ について対称なヤング図形であって,bounding box が最小のものを出力せよ.存在しないならば $-1$ を出力.
bounding box の大きさと対角線の長さを決めると,偶奇,下限・上限が決まります.その間はすべて作れます.制約が小さいので,これらのパラメータを全探索できます.
D. Редактируем Зингер | color
読解は A とほぼ同じ.$Q$ 個の変更クエリが来るので,$Q+1$ 個の答えを出力.
セグメント木に乗ります.区間に対して,初期状態が unlock, lock であるときの終状態が何かを持ちます.色については「変化しない」「x に変化する」のどちらかです.
E3. Сортировка слиянием
python コードで表される sort 関数の出力が与えられる.もとの列としてありうるものをひとつ出力せよ.答えが存在することは保証される.複数の解がある場合はそのどれを出力してもよい.
まず列の長さを決めたときのことを考える.このとき,どのような $(l,r)$ に対して log のどの部分が出力されたのかを決定できる.log の先頭から順に見ていく.そのノードで使われる部分は,0 の個数が $m-l$ 個または $1$ の個数が $r-m$ に達するところまでだから決まる.(一方後ろから決めるのは難しいはず)
列の長さを $n$ として,入力文字列の何文字分が log にできるかを考える.少し非自明だがこの値には単調性がある.$n_1, n_2$ を比べるとき,左・右にもぐった順序が同じところのノード同士を比べると証明できる.よって二分探索によって,valid な $n$ (の範囲)が求まる.
あとは sort 関数の動作を逆順にたどる感じで復元できる.