結果
問題 | No.297 カードの数式 |
ユーザー |
|
提出日時 | 2015-11-06 23:33:15 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 38 ms / 1,000 ms |
コード長 | 1,119 bytes |
コンパイル時間 | 263 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 10,624 KB |
最終ジャッジ日時 | 2024-12-26 02:16:23 |
合計ジャッジ時間 | 2,070 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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 = 0for i in range(minus):cum -= nums.pop()for i in range(plus):cum += nums.pop()tmp = 0for n in nums:tmp *= 10tmp += nreturn cum + tmpdef find_min(nums, plus, minus):if minus == 0:return find_min0(nums, plus)nums.sort(reverse=True)cum = 0for i in range(plus + 1):cum += nums.pop()for i in range(minus - 1):cum -= nums.pop()tmp = 0for n in nums:tmp *= 10tmp += nreturn cum - tmpdef find_min0(nums, plus):nums.sort(reverse = True)m, r = divmod(len(nums), plus + 1)cum = 0pow10 = 10 ** mfor i in range(r):cum += pow10 * nums.pop()for i in range(m):pow10 //= 10for j in range(plus + 1):cum += pow10 * nums.pop()return cumprint(*(find_max(nums[:], plus, minus), find_min(nums[:], plus, minus)))