難易度評価

難易度を1〜10段階で評価できます。投票はあとから変更・取り消しできます。

難易度(投票) Lv.3.0 (1票)

投票の分布
  1. Lv.10票
  2. Lv.20票
  3. Lv.31票
  4. Lv.40票
  5. Lv.50票
  6. Lv.60票
  7. Lv.70票
  8. Lv.80票
  9. Lv.90票
  10. Lv.100票

難易度の目安を見る ↗

ログインして難易度を投票

外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

Integers and Operators

作成者 loop0919

テスター mackerel38

難易度(作成者設定) Lv.4

難易度(投票) Lv.3.0 (1票)

実行時間制限
2 秒
メモリ制限
512 MiB

問題文

NN 枚の整数の書かれたカードと、 NN 枚の演算子の書かれたカードがあります。
i (1≤i≤N)i ~ (1 \le i \le N) 番目の整数の書かれたカードには整数 AiA_i が書かれています。 j (1≤j≤N)j ~ (1 \le j \le N) 番目の演算子の書かれたカードには演算子 opj\mathrm{op}_j が書かれています。 書かれている演算子は + または ^ です。

変数 xx があり、はじめ x=0x = 0 で初期化されています。あなたはこれから、以下の一連の手続きを NN 回繰り返します。

  • 整数の書かれたカードと演算子の書かれたカードをそれぞれ 11 枚ずつ選び、それぞれ整数 aa と演算子 op\mathrm{op} が書かれているとする。
    • op\mathrm{op} が + のとき、 x←x+ax \leftarrow x + a に更新する。
    • op\mathrm{op} が ^ のとき、 x←x⊕ax \leftarrow x \oplus a に更新する。ここで ⊕\oplus はビット単位 XOR を表す。
  • 上記の整数の書かれたカードと演算子の書かれたカードを食べる。

手続きがすべて完了した後の xx としてあり得る最大値と最小値をそれぞれ求めてください。

ビット単位 XOR 演算とは

非負整数 X,YX, Y のビット単位 XOR X⊕YX \oplus Y は、以下のように定義されます。

  • X⊕YX \oplus Y を二進表記したときの 2k (k≥0)2^k ~ (k \ge 0) の位の数は、 X,YX, Y を二進表記したときの 2k2^k の位の数のうち一方のみが 11 であれば 11 、そうでなければ 00 である。

例えば、 3⊕5=63 \oplus 5 = 6 となります。(二進表記すると、 011⊕101=110011 \oplus 101 = 110 です。)

制約

  • 1≤N≤81 \le N \le 8
  • 1≤Ai≤1091 \le A_i \le 10^9
  • N,AiN, A_i は整数
  • opj\mathrm{op}_j は + または ^

入力

入力は以下の形式で標準入力から与えられる。

NN A1A2…ANA_1 \quad A_2 \quad \ldots \quad A_N op1op2…opN\mathrm{op}_1 \quad \mathrm{op}_2 \quad \ldots \quad \mathrm{op}_N

出力

xx としてあり得る最大値と最小値を、この順に空白区切りで出力せよ。

サンプル 1

入力

3
1 2 3
+ + ^

出力

6 0

例えば、以下のように手続きを行うことで、 x=6x = 6 を達成することができます。

  • 33 の書かれたカードと ^ の書かれたカードを選ぶ。 x=3x = 3 に更新される。
  • 11 の書かれたカードと + の書かれたカードを選ぶ。 x=4x = 4 に更新される。
  • 22 の書かれたカードと + の書かれたカードを選ぶ。 x=6x = 6 に更新される。

このような手続きによって得られる xx の最大値と最小値はそれぞれ 6,06, 0 です。

サンプル 2

入力

8
9 323 640 833 102 773 889 900
+ ^ + ^ + + ^ ^

出力

4469 9