eolymp
bolt
Try our new interface for solving problems
Məsələlər

Простая максимальная сумма

dərc olunub 11.01.24 19:27:36

include <iostream>

include <vector>

using namespace std; int main() { int m,n; cin>>m>>n; vector<vector<int>>v(m,vector<int>(n)); vector<vector<int>>dp(m,vector<int>(n)); for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { cin>>v[i][j]; } } for(int j=0;j<n;j++) { dp[0][j]=v[0][j]; } for(int i=1;i<m;i++) { for(int j=0;j<n;j++) { dp[i][j]=dp[i-1][j]; if(j>0) { dp[i][j]=max(dp[i][j],dp[i-1][j-1]); } if(j<n-1) { dp[i][j]=max(dp[i][j],dp[i-1][j+1]); } dp[i][j]+=v[i][j]; } } int a=0; int b=0; for(int j=0;j<n;j++) { if(dp[m-1][j]>a) { a=dp[m-1][j]; b=1; } else if(dp[m-1][j]==a) { b++; } } cout<<a<<" "<<b<<endl; return 0; }//Why 70% ?