p = [2, 18, 26, 3, 159, 4, 16, 17, 93, 72, 125, 87, 200, 100] p = p + p uz_znam = dict() def o_kolik_se_da_vyhrat(zac,kon): if zac > kon: return 0 if (zac,kon) in uz_znam: return uz_znam[(zac,kon)] moznost_a = p[zac] - o_kolik_se_da_vyhrat(zac+1, kon) moznost_b = p[kon] - o_kolik_se_da_vyhrat(zac, kon-1) uz_znam[(zac,kon)] = max(moznost_a, moznost_b) return uz_znam[(zac,kon)] print(o_kolik_se_da_vyhrat(0, len(p)-1))