Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 205;
- int n, m;
- long long a[N][N], dp[N][N], cnt[N][N];
- int main(){
- cin >> n >> m;
- for (int i = 1; i <= n; i++) {
- for (int j = 1; j <= m; j++) {
- cin >> a[i][j];
- }
- }
- for (int i = 1; i <= m; i++) {
- dp[1][i] = a[1][i];
- cnt[1][i] = 1;
- }
- for (int i = 2; i <= n; i++) {
- for (int j = 1; j <= m; j++) {
- int mx = dp[i - 1][j];
- if (j - 1 >= 1 && mx < dp[i - 1][j - 1]) {
- mx = dp[i - 1][j - 1];
- }
- if (j + 1 <= m && mx < dp[i - 1][j + 1]) {
- mx = dp[i - 1][j + 1];
- }
- dp[i][j] = mx + a[i][j];
- if (j - 1 >= 1 && dp[i - 1][j - 1] == mx) {
- cnt[i][j] += cnt[i - 1][j - 1];
- }
- if (dp[i - 1][j] == mx) {
- cnt[i][j] += cnt[i - 1][j];
- }
- if (j + 1 <= m && dp[i - 1][j + 1] == mx) {
- cnt[i][j] += cnt[i - 1][j + 1];
- }
- }
- }
- long long mx = dp[n][1];
- for (int i = 2; i <= m; i++) {
- mx = max(mx, dp[n][i]);
- }
- cout << mx << " ";
- long long cn = 0;
- for (int i = 1; i <= m; i++) {
- if (dp[n][i] == mx) cn += cnt[n][i];
- }
- cout << cn << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement