Kuaishou

"""第一题"""


tmp = input().split()
numerator = int(tmp[0])
denominator = int(tmp[1])

def fractionToDecimal(numerator, denominator):
    if numerator == 0:
        return '0'
    res = ''
    if numerator * denominator < 0:
        res += '-'
    numerator, denominator = abs(numerator), abs(denominator)
    res += str(numerator // denominator)
    if numerator % denominator == 0:
        return res
    res += '.'
    r = numerator % denominator
    m = {}
    # print(res)
    while r:
        if r in m:
            res = res[:m[r]] + '(' + res[m[r]:] + ')'
            break
        m[r] = len(res)
        r *= 10
        res += str(r // denominator)
        r %= denominator

    return res


res = fractionToDecimal(numerator, denominator)
# print(res)
if '(' not in res:
    if '.' not in res:
        print(int(res))
    else:
        print(res)
else:
    print(res)







"""第二题"""


tmp = input().split(',')
if not tmp:
    print(0)
else:
    costs = [int(i) for i in tmp]

    if len(costs) == 1:
        print(costs[-1])
    elif len(costs) == 2:
        print(costs[-1])
    else:
        dp = [0] * len(costs)
        dp[0] = costs[0]
        dp[1] = costs[1]


        for i in range(2, len(dp)):
            dp[i] = min(dp[i-1], dp[i-2]) + costs[i]

        print(min(dp[-3], dp[-2]) + costs[-1])





"""第三题"""
def max_sub_array(nums):
    n = len(nums)
    maxSum = [nums[0] for i in range(n)]
    for i in range(1, n):
        maxSum[i] = max(maxSum[i - 1] + nums[i], nums[i])
    return (maxSum.index(max(maxSum)), max(maxSum))
def min_sub_array(nums):
    n = len(nums)
    minSum = [nums[0] for i in range(n)]
    for i in range(1, n):
        minSum[i] = min(minSum[i - 1] + nums[i], nums[i])
    return (minSum.index(min(minSum)), min(minSum))

tmp = input().split()
N, M = int(tmp[0]), int(tmp[1])
tmp = input().split(' ')
levels = [int(i) for i in tmp]
backup_levels = [i for i in levels]
idxes = []
res = 0
k = 0
for i in range(M):
    idx, cur_max = max_sub_array(levels)
    if cur_max >= 0:
        cur_sum = 0
        left_idx = 0
        for j in range(idx, -1, -1):
            cur_sum += levels[j]
            if cur_sum == cur_max:
                left_idx = j
                idxes.append([left_idx, idx])
                break
        levels = levels[:left_idx] + levels[idx+1:]
        # print(cur_max)
        res += cur_max
        # print(res)
    else:

        # tmp = min_sub_array(backup_levels[idxes[i][0]:idxes[i][1] + 1])[1]
        idx, cur_min = min_sub_array(backup_levels[idxes[k][0]:idxes[k][1] + 1])
        if cur_min <= 0:
            cur_sum = 0
            left_idx = 0
            for j in range(idx, -1, -1):
                cur_sum += backup_levels[j]
                if cur_sum == cur_max:
                    left_idx = j
                    # idxes.append([left_idx, idx])
                    break
            # print(left_idx, idx)
        k += 1
        res += -cur_min if cur_min <= 0 else 0

# print(res)
# print(backup_levels)
# print(idxes)


print(res)
# print()
# print(min_sub_array(backup_levels[0:5]))


回到顶部