Статья Автор: Сергеев Антон

Jcxjdjjddj

n, m = map(int, input().split())
a = []
for i in range(n):
    a.append(list(map(int, input().split())))
dp = [[0] * m for i in range(n)]
dp[0][m-1]=a[0][m-1]
for i in range(m-2,-1,-1):
  dp[0][i]=a[0][i]+dp[0][i+1]
for j in range(1,n):
  dp[j][m-1]=a[j][m-1]+dp[j-1][m-1]
for i in range(1,n):
  for j in range(m-2,-1,-1):
    dp[i][j]=a[i][j]+max(dp[i-1][j],dp[i][j-1])
print(dp[n-1][0])

n, m = map(int, input().split())
a = []
for i in range(n):
    a.append(list(map(int, input().split())))
dp = [[0] * m for i in range(n)]
dp[0][m-1]=a[0][m-1]
for i in range(m-2,-1,-1):
  dp[0][i]=a[0][i]+dp[0][i+1]
for j in range(1,n):
  dp[j][m-1]=a[j][m-1]+dp[j-1][m-1]
for i in range(1,n):
  for j in range(m-2,-1,-1):
    dp[i][j]=a[i][j]+max(dp[i-1][j],dp[i][j-1])
print(dp[n-1][0])
Пропустить Навигационные Ссылки.
#N4
'''
N = int(input())
if N!=0:
    dp = [[1]]
    for i in range(2,N+1):
        x = [1]
        for j in range(1,i-1):
            x.append(dp[i-2][j]+dp[i-2][j-1])
        x.append(1)
        dp.append(x)
    for i in range(N):
        print(*dp[i])
'''

#N5
'''
N, M = map(int, input().split())
dp = []
for i in range(N):
    x = [0]*M
    dp.append(x)
dp[0][0]=1
for i in range(N):
    for j in range(M):
        if i >= 2 and j >= 1:
            dp[i][j] += dp[i-2][j-1]
        if i >= 1 and j >= 2:
            dp[i][j] += dp[i-1][j-2]
print(dp[N-1][M-1])
'''
от Сергеев Антон 11.12.2025 23:37
1. Найти Максимум, про монеты
Изменено 11:52
2.Минимум справа сверху если он идет вниз
Изменено 11:52
3. конь найти количество путей в точку [C][Д]
Изменено 11:52
4.Таблицы максимум (2 операции)
5.Стенки (3 операции)
#N1
'''
N,M = map(int, input().split())
dp = []
for i in range(N):
    x = [1]*M
    dp.append(x)
for i in range(1,N):
    for j in range(1, M):
        dp[i][j] = dp[i-1][j]+dp[i][j-1]
print(dp[N-1][M-1])
'''

#N2
'''
N,M = map(int, input().split())
a = []
for i in range(N):
    x = list(map(int, input().split()))
    a.append(x)
dp = []
for i in range(N):
    x = [0]*M
    dp.append(x)
dp[0][0]=a[0][0]
for i in range(1,M):
    dp[0][i] = a[0][i]+dp[0][i-1]
for i in range(1,N):
    dp[i][0] = a[i][0]+dp[i-1][0]    
for i in range(1,N):
    for j in range(1,M):
        dp[i][j] = a[i][j] + min(dp[i-1][j],dp[i][j-1])
print(dp[N-1][M-1])
'''
#N3
'''
N,M = map(int, input().split())
a = []
for i in range(N):
    x = list(map(int, input().split()))
    a.append(x)
dp = []
for i in range(N):
    x = [0]*M
    dp.append(x)
dp[0][0]=a[0][0]
for i in range(1,M):
    dp[0][i] = a[0][i]+dp[0][i-1]
for i in range(1,N):
    dp[i][0] = a[i][0]+dp[i-1][0]
for i in range(1,N):
    for j in range(1,M):
        dp[i][j] = a[i][j] + max(dp[i-1][j],dp[i][j-1])
print(dp[N-1][M-1])
path = []
i = N-1
j = M-1
while i != 0 or j != 0:
    if i == 0:
        path.append('R')
        j-=1
    elif j == 0:
        path.append('D')
        i-=1
    else:
        if dp[i-1][j]>dp[i][j-1]:
            path.append('D')
            i-=1
        else:
            path.append('R')
            j-=1
path.reverse()
print(*path)
'''

#N4
'''
N = int(input())
if N!=0:
    dp = [[1]]
    for i in range(2,N+1):
        x = [1]
        for j in range(1,i-1):
            x.append(dp[i-2][j]+dp[i-2][j-1])
        x.append(1)
        dp.append(x)
    for i in range(N):
        print(*dp[i])
'''

#N5
'''
N, M = map(int, input().split())
dp = []
for i in range(N):
    x = [0]*M
    dp.append(x)
dp[0][0]=1
for i in range(N):
    for j in range(M):
        if i >= 2 and j >= 1:
            dp[i][j] += dp[i-2][j-1]
        if i >= 1 and j >= 2:
            dp[i][j] += dp[i-1][j-2]
print(dp[N-1][M-1])
'''
 
от Сергеев Антон 11.12.2025 23:44
Чтобы оставить комментарий нужна авторизация
Печать