nums = input().split(' ') res = [] def fun(lst:list):
global res
if lst == []:
res.append('null')
else:
m = max(lst)
i = lst.index(m)
res.append(str(m))
if len(lst)>1:
fun(lst[0:i])
fun(lst[i+1:])
nums = [int(n) for n in nums] fun(nums) print(' '.join(res))
def create(nums):
if not nums:
return
i = nums.index(max(nums))
print(nums.pop(i),end=' ')
if i==0 and nums:
print('null',end=' ')
create(nums)
elif i==len(nums) and nums:
create(nums)
print("null",end=' ')
else:
create(nums[:i])
create(nums[i:])
b=[] for i in input().split():
b.append(int(i))
create(b)
n = int(input()) a = list(map(int, input().split())) candidate = a[0] count = 1 for num in a[1:]:
if num == candidate:
count += 1
else:
count -= 1
if count == 0:
candidate = num
count = 1
print(candidate)
n = int(input()) nums = list(map(int, input().split())) if not nums:
print(0)
else:
current_sum = max_sum = nums[0]
for num in nums[1:]:
current_sum = max(num, current_sum + num)
max_sum = max(max_sum, current_sum)
print(max_sum)
N = int(input()) coins = [2, 5, 7] dp = [float('inf')] * (N + 1) dp[0] = 0 for i in range(1, N + 1):
for coin in coins:
if i >= coin:
dp[i] = min(dp[i], dp[i - coin] + 1)
print(dp[N] if dp[N] != float('inf') else -1)
import math def calculate_paths(m, n):
return math.comb(m+n-2, m-1)
m, n = map(int, input().split()) print(calculate_paths(m, n))
n = int(input()) a, b = 1, 2 for _ in range(n - 1):
a, b = b, a + b
print(a)
n, c = map(int, input().split()) w = list(map(int, input().split())) v = list(map(int, input().split()))
dp = [0] * (c + 1)
for i in range(n):
for j in range(c, w[i] - 1, -1):
dp[j] = max(dp[j], dp[j - w[i]] + v[i])
print(dp[c])
s = input().strip() n = len(s) if n < 2:
print(s)
exit()
start, max_len = 0, 1 def expand_around_center(left, right):
while left >= 0 and right < n and s[left] == s[right]:
left -= 1
right += 1
return right - left - 1
for i in range(n):
len1 = expand_around_center(i, i)
len2 = expand_around_center(i, i + 1)
current_max = max(len1, len2)
if current_max > max_len:
max_len = current_max
start = i - (max_len - 1) // 2
print(s[start:start + max_len])
nums = list(map(int, input().split())) target = int(input())
total = sum(nums) if (total + target) % 2 != 0 or total < abs(target):
print(0)
else:
p = (total + target) // 2
dp = [0] * (p + 1)
dp[0] = 1
for num in nums:
for i in range(p, num - 1, -1):
dp[i] += dp[i - num]
print(dp[p])
import itertools def letter_combinations(digits):
if not digits:
return []
digit_map = {
'2': 'abc',
'3': 'def',
'4': 'ghi',
'5': 'jkl',
'6': 'mno',
'7': 'pqrs',
'8': 'tuv',
'9': 'wxyz'
}
letters = [digit_map[d] for d in digits]
products = itertools.product(*letters)
result = [''.join(p) for p in products]
result.sort()
return result
digits = input().strip() combinations = letter_combinations(digits) print(str(combinations).replace("'", ""))
n = int(input()) count = 0
def backtrack(position, used):
global count
if position > n:
count += 1
return
for num in range(1, n + 1):
if not used[num] and (num % position == 0 or position % num == 0):
used[num] = True
backtrack(position + 1, used)
used[num] = False
used = [False] * (n + 1) backtrack(1, used) print(count)
n, k = map(int, input().split())
def backtrack(start, path):
if len(path) == k:
print(' '.join(map(str, path)))
return
for i in range(start, n + 1):
path.append(i)
backtrack(i + 1, path)
path.pop()
backtrack(1, [])
def integerBreak(n):
if n == 2:
return 1
if n == 3:
return 2
product = 1
while n > 4:
product *= 3
n -= 3
product *= n
return product
n = int(input()) print(integerBreak(n))
n = int(input()) a = list(map(int, input().split()))
def find_fake(start, end):
if start == end:
return start + 1 # 返回位置(从1开始)
size = end - start + 1
group_size = (size + 2) // 3 # 确保分组合理
# 分成三组:g1, g2, g3
g1_end = start + group_size - 1
g2_end = g1_end + group_size
# 比较前两组的重量
sum1 = sum(a[start:g1_end + 1])
sum2 = sum(a[g1_end + 1:g2_end + 1])
if sum1 < sum2:
return find_fake(start, g1_end)
elif sum1 > sum2:
return find_fake(g1_end + 1, g2_end)
else:
return find_fake(g2_end + 1, end)
print(find_fake(0, n - 1))
nums = list(map(int, input().split())) total = sum(nums) if total % 2 != 0:
print("false")
else:
target = total // 2
dp = [False] * (target + 1)
dp[0] = True
for num in nums:
for i in range(target, num - 1, -1):
dp[i] = dp[i] or dp[i - num]
print("true" if dp[target] else "false")
A = list(map(int, input().split())) A.sort() n = len(A) max_perimeter = 0 for i in range(n - 1, 1, -1):
if A[i - 2] + A[i - 1] > A[i]:
max_perimeter = A[i - 2] + A[i - 1] + A[i]
break
print(max_perimeter)