ABC474 D - Outweigh

より重く

考え方

直感的に、以下のようにしたくなる。

そして、$10^{18}$ にした石が $1$ つでもあればこれを出力、なければ不可能判定、で正解である。
計算量は $O(N)$ である。

以下、これで正しいことの証明。

まず、$10^{18}$ にした石が $1$ つもない場合。
この場合、全ての種類の石を青木君が高橋君以上に持っている。
したがって、高橋君が青木君を上回ることは絶対にないことは明らか。

次に、$10^{18}$ にした石が $1$ つでもあった場合。
$10^{18}$ にした石の分だけを見ると、高橋君の方がこれを $1$ つ以上多く持っている。
よって、それにより生じる差は、少なくとも $10^{18}$ ある。
$1$ にした石の分だけ見ると、その種類数は $10^5$ より小さく、各種の個数差は $10^9$ より小さい。
よって、それにより生じる差は、多くとも $10^{14}$ となる。
したがって、必ず高橋君の方が重くなっている。

以上、証明終わり。

入力例1での動作

入力を受け取る。

n: 3
a: {4, 7, 4}
b: {5, 5, 5}

各種類について、高橋君の方が多く持っているかを確認する。

種類 $A_i$ $B_i$ 決める重さ
$1$ $4$ $5$ $1$
$2$ $7$ $5$ $10^{18}$
$3$ $4$ $5$ $1$

$2$ 種類目では高橋君の方が多く持っているので、$10^{18}$ にした石が $1$ つ以上ある。
したがって、条件を満たす構築が以下のように可能である。

w: {1, 1000000000000000000, 1}

注意点

この方法で作ったものが本当に条件を満たすか確認すると、long long 型でもオーバーフロー。
手作業で証明して、コードには構築方法だけを書くこと。

別解

特になし。