import fractions
import time
import copy
import random
import sys
sys.setrecursionlimit(1000000000)

class Node:
    def setVal(this, val):
        this.op = "value"
        this.result = val
        return this
    
    def read(this):
        if this.op == "value":
            return this.result
        leftVal = this.left.read()
        rightVal = this.right.read()
        if this.op == "concat":
            mul = 1
            tmp = rightVal
            while tmp > 0:
                mul *= 10
                tmp //= 10
            result = leftVal * mul + rightVal
        elif this.op == "+":
            result = leftVal + rightVal
        elif this.op == "-":
            result = leftVal - rightVal
        elif this.op == "/":
            result = leftVal / rightVal
        elif this.op == "*":
            result = leftVal * rightVal
        return result
    
    def setOp(this, leftNode, rightNode, typeOp):
        this.left = leftNode
        this.right = rightNode
        this.op = typeOp
        this.result = this.read()
        return this
    
    def getString(this):
        if this.op == "value":
            return str(this.result)
        elif this.op == "concat":
            return "(" + this.left.getString() + " " + this.right.getString() + ")"
        else:
            return "(" + this.left.getString() + this.op + this.right.getString() +  ")"

ops = ["concat", "+", "-", "*", "/"]

n = int(input())
a = list(map(int, input().split()))
# 甘え(デバッグつらいので)
start_time = time.time()
node_vals = [Node().setVal(v) for v in a]
# 流石に超えんやろ
cur_val = float("inf")
cur_str = ""

# 時間いっぱい(白目)
use_time = 5
while time.time() - start_time < use_time:
    tmp_node_vals = copy.deepcopy(node_vals)
    # shuffle
    random.shuffle(tmp_node_vals)
    main = tmp_node_vals[0]
    # 前から適当に繋いでいく
    for i in range(1, n):
        if i == 1:
            use = random.randint(0, 4)
        else:
            use = random.randint(1, 4)
        main = Node().setOp(main, tmp_node_vals[i], ops[use])
    getVal = main.read()
    result = main.getString()
    if abs(getVal-100) < abs(cur_val-100):
        # print(getVal, result)
        cur_val = getVal
        cur_str = result
print(cur_str)

Battle History

ConfigScoreDate
komachi baby10000000000002019/11/22 17:12:34
5 small10000000000002019/11/22 17:12:34
5 small10000000000002019/11/22 17:12:34
5 small10000000000002019/11/22 17:12:34
20 middle9999921702002019/11/22 17:12:34
20 middle9999998141002019/11/22 17:12:34
20 middle9999977960002019/11/22 17:12:34
1000 large9977041284002019/11/22 17:12:34
1000 large9978887879002019/11/22 17:12:34
1000 large9989213984002019/11/22 17:12:34