問題
$ N $ 枚のカードがあり、$ i $ 枚目のカードの表には整数 $ A_i $、裏には整数 $ B_i $ が書かれています。
カードを何枚か選び、次のように定義するスコアを最大にしたいです。
[スコア] = [選んだカードにおける表の総和の絶対値] + [選んだカードにおける裏の総和の絶対値]
スコアとして考えられる最大値はいくつになるでしょうか。
[制約]
🔹$ 1 \leqq N \leqq 100000 $
🔹$ -10^9 \leqq A_i \leqq 10^9 $
🔹$ -10^9 \leqq B_i \leqq 10^9 $
解き方・ソースコード
この問題では「表の総和を正/負のどちらにするか」「裏の総和を正/負のどちらにするか」を全探索することで解くことができます。
計算量は $ O(4N) $ となります。
[Google Colaboratory]
1 | import random |
[実行結果]
【入力データの確認】 A [7, -16, 10, -13, 12] B [18, -13, -14, 4, 18] 選択したカード: 7 18 選択したカード: 12 18 合計: 55 --------------------- 選択したカード: 10 14 合計: 24 --------------------- 選択したカード: -7 18 選択したカード: 16 -13 選択したカード: 13 4 選択したカード: -12 18 合計: 37 --------------------- 選択したカード: 7 18 選択したカード: 12 18 合計: 55 --------------------- 【解】 55