結果
| 問題 | No.297 カードの数式 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-11-06 23:33:15 |
| 言語 | Python3 (3.15.0 + numpy 2.5.4 + scipy 1.18.1 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 21 ms / 1,000 ms |
| + 259µs | |
| コード長 | 1,119 bytes |
| 記録 | |
| コンパイル時間 | 54 ms |
| コンパイル使用メモリ | 15,104 KB |
| 実行使用メモリ | 11,136 KB |
| 最終ジャッジ日時 | 2026-10-08 01:56:23 |
| 合計ジャッジ時間 | 2,032 ms |
|
ジャッジサーバーID (参考情報) |
judge1_1 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 23 |
ソースコード
N = int(input())
cs = list(input().split())
nums = [int(c) for c in cs if c not in '+-']
plus = cs.count('+')
minus = cs.count('-')
def find_max(nums, plus, minus):
nums.sort(reverse=True)
cum = 0
for i in range(minus):
cum -= nums.pop()
for i in range(plus):
cum += nums.pop()
tmp = 0
for n in nums:
tmp *= 10
tmp += n
return cum + tmp
def find_min(nums, plus, minus):
if minus == 0:
return find_min0(nums, plus)
nums.sort(reverse=True)
cum = 0
for i in range(plus + 1):
cum += nums.pop()
for i in range(minus - 1):
cum -= nums.pop()
tmp = 0
for n in nums:
tmp *= 10
tmp += n
return cum - tmp
def find_min0(nums, plus):
nums.sort(reverse = True)
m, r = divmod(len(nums), plus + 1)
cum = 0
pow10 = 10 ** m
for i in range(r):
cum += pow10 * nums.pop()
for i in range(m):
pow10 //= 10
for j in range(plus + 1):
cum += pow10 * nums.pop()
return cum
print(*(find_max(nums[:], plus, minus), find_min(nums[:], plus, minus)))