Pagini recente » Cod sursa (job #1342419) | Cod sursa (job #3285673) | Cod sursa (job #2667053) | Cod sursa (job #1052578) | Cod sursa (job #2539314)
import math
def inp_gen(fname):
with open(fname, 'rt') as fin:
for line in fin:
for val in line.split():
yield int(val)
if __name__ == "__main__":
it = inp_gen("podm.in")
n = next(it)
d = [[math.inf for _ in range(n + 1)] for _ in range(n + 1)]
v = {}
for i in range(n + 1):
x = next(it)
v[i] = x
for i in range(1, n + 1):
if i < n:
d[i][i + 1] = v[i - 1] * v[i] * v[i + 1]
d[i][i] = 0
for dim in range(2, n):
for left in range(1, n):
right = left + dim
if right > n: continue
for k in range(left, right):
d[left][right] = min(d[left][right], d[left][k] + d[k + 1][right] + v[left - 1] * v[k] * v[right])
with open("podm.out", "wt") as fout:
fout.write('{}\n'.format(d[1][n]))