結果
| 問題 | No.297 カードの数式 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2015-11-10 17:55:49 | 
| 言語 | Python2 (2.7.18) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 20 ms / 1,000 ms | 
| コード長 | 1,698 bytes | 
| コンパイル時間 | 66 ms | 
| コンパイル使用メモリ | 6,912 KB | 
| 実行使用メモリ | 7,296 KB | 
| 最終ジャッジ日時 | 2024-12-26 02:24:17 | 
| 合計ジャッジ時間 | 1,736 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 23 | 
ソースコード
from Queue import * # Queue, LifoQueue, PriorityQueue
from bisect import * #bisect, insort
from collections import * #deque, Counter,OrderedDict,defaultdict
#set([]) 
import math
import copy
import itertools
import string
import sys
import re
myread = lambda : map(int,raw_input().split())
def calc(nums, plus, minus):
    op = plus + minus
    s = ""
    for i in xrange(len(nums)-op):
        s += nums[i]
    for i in xrange(plus):
        s += '+'
        s += nums[len(nums) - op + i]
    for i in xrange(minus):
        s += '-'
        s += nums[len(nums) - minus + i]
    s = re.sub(r'\b0+(?!\b)', '', s)
    return eval(s)
def calc2(nums, plus, minus):
    s = ""
    if minus > 0:
        op = plus + minus
        for i in xrange(plus):
            s += nums[i]
            s += '+'
        for i in xrange(minus):
            s += nums[plus + i]
            s += '-'
        for i in xrange(len(nums)-op):
            s += nums[-i-1]
    else:
        numsx = ["" for _ in xrange(plus+1)]
        for i in xrange(len(nums)):
            c = i % (plus + 1)
            numsx[c] += nums[i]
        for i in xrange(plus+1):
            if i != 0:
                s += "+"
            s += numsx[i]
    s = re.sub(r'\b0+(?!\b)', '', s)
    return eval(s)
def solver():
    N = int(raw_input())
    plus,minus = 0,0
    nums = []
    S = raw_input().split()
    for i in xrange(N):
        if S[i] == '+':
            plus += 1
        elif S[i] == '-':
            minus += 1
        else:
            nums.append(S[i])
    nums.sort()
    minv = calc2(nums,plus,minus)
    nums.reverse()
    maxv = calc(nums,plus,minus)
    print maxv,minv
if __name__ == "__main__":
    solver()
    
            
            
            
        