# import sys
# sys.stdin = open("tra.txt", "r")
def generate_bounded_tuples(n_elements, total_sum, max_val, current_tuple=None):
if current_tuple is None:
current_tuple = []
if n_elements == 1:
if 0 <= total_sum <= max_val:
yield tuple(current_tuple + [total_sum])
return
upper_bound = min(max_val, total_sum)
for i in range(upper_bound + 1):
yield from generate_bounded_tuples(
n_elements - 1,
total_sum - i,
max_val,
current_tuple + [i]
)
n, m, k = map(int, input().split())
stossum = []
for i in range(n):
stos = list(map(int, input().split()))
sumc = [0]
for i in range(m):
sumc.append(stos[i]+sumc[i])
stossum.append(sumc)
rozmiar = 0
for t in generate_bounded_tuples(n, k, m):
suma = sum([stossum[index][wart] for index, wart in enumerate(t)])
rozmiar = max(rozmiar, suma)
print(rozmiar)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # import sys # sys.stdin = open("tra.txt", "r") def generate_bounded_tuples(n_elements, total_sum, max_val, current_tuple=None): if current_tuple is None: current_tuple = [] if n_elements == 1: if 0 <= total_sum <= max_val: yield tuple(current_tuple + [total_sum]) return upper_bound = min(max_val, total_sum) for i in range(upper_bound + 1): yield from generate_bounded_tuples( n_elements - 1, total_sum - i, max_val, current_tuple + [i] ) n, m, k = map(int, input().split()) stossum = [] for i in range(n): stos = list(map(int, input().split())) sumc = [0] for i in range(m): sumc.append(stos[i]+sumc[i]) stossum.append(sumc) rozmiar = 0 for t in generate_bounded_tuples(n, k, m): suma = sum([stossum[index][wart] for index, wart in enumerate(t)]) rozmiar = max(rozmiar, suma) print(rozmiar) |
English