main.cc 511 B

123456789101112131415161718192021
  1. #include <algorithm>
  2. #include <cstdio>
  3. #include <cstring>
  4. using namespace std;
  5. const int N = 100;
  6. int dp[N], tri[N][N];
  7. // dp[i] means the max sum from the ith col of curr row to the last row.
  8. int main() {
  9. int n;
  10. scanf("%d", &n);
  11. for (int i = 0; i < n; i++)
  12. for (int j = 0; j < i + 1; j++) scanf("%d", &tri[i][j]);
  13. memcpy(dp, tri[n - 1], n * sizeof(int));
  14. for (int i = n - 1; 0 < i; i--)
  15. for (int j = 0; j < i; j++) dp[j] = tri[i - 1][j] + max(dp[j], dp[j + 1]);
  16. printf("%d\n", dp[0]);
  17. }