AT_abc347_d [ABC347D] Popcount and XOR

Description

[problemUrl]: https://atcoder.jp/contests/abc347/tasks/abc347_d 非負整数 $ a,b,C $ が与えられます。 次の $ 5 $ つの条件をすべて満たす非負整数の組 $ (X,Y) $ が存在するか判定し、存在するならひとつ出力してください。 - $ 0\leq\ X\lt2\ ^\ {60} $ - $ 0\leq\ Y\lt2\ ^\ {60} $ - $ \operatorname{popcount}(X)=a $ - $ \operatorname{popcount}(Y)=b $ - $ X\oplus\ Y=C $ ただし、$ \oplus $ はビットごとの排他的論理和を表します。 条件を満たす $ (X,Y) $ が複数存在する場合、どれを出力しても構いません。 popcount とは?非負整数 $ x $ について $ x $ の popcount とは、$ x $ を $ 2 $ 進法で表記したときの $ 1 $ の個数です。 より厳密には、非負整数 $ x $ について $ \displaystyle\ x=\sum\ _\ {i=0}\ ^\ \infty\ b\ _\ i2\ ^\ i\ (b\ _\ i\in\lbrace0,1\rbrace) $ が成り立っているとき $ \displaystyle\operatorname{popcount}(x)=\sum\ _\ {i=0}\ ^\ \infty\ b\ _\ i $ です。 例えば、$ 13 $ を $ 2 $ 進法で表記すると `1101` なので、 $ \operatorname{popcount}(13)=3 $ となります。 ビットごとの排他的論理和とは?非負整数 $ x,y $ について $ x,y $ のビットごとの排他的論理和 $ x\oplus\ y $ は以下のように定義されます。 - $ x\oplus\ y $ を $ 2 $ 進法で表記したときの $ 2\ ^\ k\ (k\geq0) $ の位は、$ x,y $ を $ 2 $ 進法で表記したときの $ 2\ ^\ k\ (k\geq0) $ の位の数のうち一方のみが $ 1 $ であれば $ 1 $ 、そうでなければ $ 0 $ となる。 例えば、$ 9,3 $ を $ 2 $ 進法で表記するとそれぞれ `1001`, `0011` なので、$ 9\oplus3=10 $ となります($ 10 $ を $ 2 $ 進法で表記すると `1010` です)。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ a $ $ b $ $ C $

Output Format

条件を満たす非負整数の組が存在するならば、そのような $ (X,Y) $ をひとつ選び $ X,Y $ をこの順に空白を区切りとして出力せよ。 存在しないならば、`-1` を出力せよ。

Explanation/Hint

### 制約 - $ 0\leq\ a\leq60 $ - $ 0\leq\ b\leq60 $ - $ 0\leq\ C\lt2\ ^\ {60} $ - 入力はすべて整数 ### Sample Explanation 1 $ (X,Y)=(28,27) $ は条件を満たします。 $ X,Y $ を $ 2 $ 進法で表記するとそれぞれ `11100` と `11011` になります。 - $ X $ を $ 2 $ 進法で表記すると `11100` になるので、$ \operatorname{popcount}(X)=3 $ です。 - $ Y $ を $ 2 $ 進法で表記すると `11011` になるので、$ \operatorname{popcount}(Y)=4 $ です。 - $ X\oplus\ Y $ を $ 2 $ 進法で表記すると `00111` となり、$ X\oplus\ Y=7 $ です。 条件を満たす非負整数の組が複数存在する場合どれを出力しても構わないため、例えば `42 45` と出力しても正解になります。 ### Sample Explanation 2 条件を満たす非負整数の組は存在しません。 ### Sample Explanation 3 出力すべき値が $ 32\operatorname{bit} $ 整数に収まらない場合があります。