Buggy python submission (verdict: Time Limit Exceeded):
#dp[i][j][k]=(i,j)にアイテムをk個以下使って移動するときの最大値
#入力
r,c,k=list(map(int,input().split()))

rck=[[0 for i in range(c+1)] for j in range(r+1)]
for i in range(k):
     r_num,c_num,k_num=list(map(int,input().split()))
     rck[r_num][c_num]=k_num

#dpテーブルと初期条件
dp_0=[[0 for j in range(c+1)] for k in range(r+1)]
dp_1=[[0 for j in range(c+1)] for k in range(r+1)]
dp_2=[[0 for j in range(c+1)] for k in range(r+1)]
dp_3=[[0 for j in range(c+1)] for k in range(r+1)]
#dp
for i in range(1,r+1):
  for j in range(1,c+1):
    dp_1[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_0[i][j-1]+rck[i][j],dp_0[i][j],dp_1[i][j-1])
    dp_2[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_1[i][j-1]+rck[i][j],dp_1[i][j],dp_2[i][j-1])
    dp_3[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_2[i][j-1]+rck[i][j],dp_2[i][j],dp_3[i][j-1])
    
    
    
    
    #dp[i][j][k]=max(dp[i-1][j][3]+rck[i][j],dp[i][j-1][k-1]+rck[i][j],dp[i][j][k-1],dp[i][j-1][k])
    #print(dp[i][j])
print(dp_3[r][c])

     
      


  

Fixed submission:
#dp[i][j][k]=(i,j)にアイテムをk個以下使って移動するときの最大値
#入力
r,c,k=list(map(int,input().split()))

rck=[[0 for i in range(c+1)] for j in range(r+1)]
for i in range(k):
     r_num,c_num,k_num=list(map(int,input().split()))
     rck[r_num][c_num]=k_num

#dpテーブルと初期条件
dp_0=[[0 for j in range(c+1)] for k in range(r+1)]
dp_1=[[0 for j in range(c+1)] for k in range(r+1)]
dp_2=[[0 for j in range(c+1)] for k in range(r+1)]
dp_3=[[0 for j in range(c+1)] for k in range(r+1)]
#dp
for i in range(1,r+1):
  for j in range(1,c+1):
    dp_1[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_0[i][j-1]+rck[i][j],dp_0[i][j],dp_1[i][j-1])
    dp_2[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_1[i][j-1]+rck[i][j],dp_1[i][j],dp_2[i][j-1])
    dp_3[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_2[i][j-1]+rck[i][j],dp_2[i][j],dp_3[i][j-1])
    
    
    
    
    #dp[i][j][k]=max(dp[i-1][j][3]+rck[i][j],dp[i][j-1][k-1]+rck[i][j],dp[i][j][k-1],dp[i][j-1][k])
    #print(dp[i][j])
print(dp_3[r][c])

Buggy python submission (verdict: Time Limit Exceeded):
#dp[i][j][k]=(i,j)にアイテムをk個以下使って移動するときの最大値
#入力
r,c,k=list(map(int,input().split()))

rck=[[0 for i in range(c+1)] for j in range(r+1)]
for i in range(k):
     r_num,c_num,k_num=list(map(int,input().split()))
     rck[r_num][c_num]=k_num

#dpテーブルと初期条件
dp=[[[0 for i in range(4)] for j in range(c+1)] for k in range(r+1)]
#dp
for i in range(1,r+1):
  for j in range(1,c+1):
    for k in range(1,4):
      dp[i][j][k]=max(dp[i-1][j][3]+rck[i][j],dp[i][j-1][k-1]+rck[i][j],dp[i][j-1][k],dp[i][j][k-1])
    #print(dp[i][j])
print(dp[r][c][3])

      
      
      
      
      


  

Fixed submission:
#dp[i][j][k]=(i,j)にアイテムをk個以下使って移動するときの最大値
#入力
r,c,k=list(map(int,input().split()))

rck=[[0 for i in range(c+1)] for j in range(r+1)]
for i in range(k):
     r_num,c_num,k_num=list(map(int,input().split()))
     rck[r_num][c_num]=k_num

#dpテーブルと初期条件
dp_0=[[0 for j in range(c+1)] for k in range(r+1)]
dp_1=[[0 for j in range(c+1)] for k in range(r+1)]
dp_2=[[0 for j in range(c+1)] for k in range(r+1)]
dp_3=[[0 for j in range(c+1)] for k in range(r+1)]
#dp
for i in range(1,r+1):
  for j in range(1,c+1):
    dp_1[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_0[i][j-1]+rck[i][j],dp_0[i][j],dp_1[i][j-1])
    dp_2[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_1[i][j-1]+rck[i][j],dp_1[i][j],dp_2[i][j-1])
    dp_3[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_2[i][j-1]+rck[i][j],dp_2[i][j],dp_3[i][j-1])
    
    
    
    
    #dp[i][j][k]=max(dp[i-1][j][3]+rck[i][j],dp[i][j-1][k-1]+rck[i][j],dp[i][j][k-1],dp[i][j-1][k])
    #print(dp[i][j])
print(dp_3[r][c])

Buggy python submission (verdict: Time Limit Exceeded):
#dp[i][j][k]=(i,j)にアイテムをk個以下使って移動するときの最大値
#入力
r,c,k=list(map(int,input().split()))

rck=[[0 for i in range(c+1)] for j in range(r+1)]
for i in range(k):
     r_num,c_num,k_num=list(map(int,input().split()))
     rck[r_num][c_num]=k_num

#dpテーブルと初期条件
dp=[[[0 for i in range(4)] for j in range(c+1)] for k in range(r+1)]
#dp
for i in range(1,r+1):
  for j in range(1,c+1):
    for k in range(1,4):
      dp[i][j][k]=max(dp[i-1][j][3]+rck[i][j],dp[i][j-1][k-1]+rck[i][j],dp[i][j-1][k],dp[i][j][k-1])
    #print(dp[i][j])
print(dp[r][c][3])

      
      
      
      
      


  

Fixed submission:
#dp[i][j][k]=(i,j)にアイテムをk個以下使って移動するときの最大値
#入力
r,c,k=list(map(int,input().split()))

rck=[[0 for i in range(c+1)] for j in range(r+1)]
for i in range(k):
     r_num,c_num,k_num=list(map(int,input().split()))
     rck[r_num][c_num]=k_num

#dpテーブルと初期条件
dp_0=[[0 for j in range(c+1)] for k in range(r+1)]
dp_1=[[0 for j in range(c+1)] for k in range(r+1)]
dp_2=[[0 for j in range(c+1)] for k in range(r+1)]
dp_3=[[0 for j in range(c+1)] for k in range(r+1)]
#dp
for i in range(1,r+1):
  for j in range(1,c+1):
    dp_1[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_0[i][j-1]+rck[i][j],dp_0[i][j],dp_1[i][j-1])
    dp_2[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_1[i][j-1]+rck[i][j],dp_1[i][j],dp_2[i][j-1])
    dp_3[i][j]=max(dp_3[i-1][j]+rck[i][j],dp_2[i][j-1]+rck[i][j],dp_2[i][j],dp_3[i][j-1])
    
    
    
    
    #dp[i][j][k]=max(dp[i-1][j][3]+rck[i][j],dp[i][j-1][k-1]+rck[i][j],dp[i][j][k-1],dp[i][j-1][k])
    #print(dp[i][j])
print(dp_3[r][c])