Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define min(X,Y) (((X) <= (Y)) ? (X) : (Y))
- #define max(X,Y) (((X) >= (Y)) ? (X) : (Y))
- int main()
- {
- int N;
- scanf("%d", &N);
- long a[100][100];
- long long dp[100][100]; //best way to [i][j]
- for (int i = 0; i < 100; i++) {
- for (int j = 0; j < 100; j++) a[i][j] = 0;
- }
- for (int i = 0; i < N; i++) {
- for (int j = 0; j < i + 1; j++) {
- scanf ("%ld", &a[i][j]);
- }
- }
- dp[0][0] = a[0][0];
- for (int i = 1; i < N; i++) {
- dp[i][0] = a[i][0] + dp[i-1][0];
- for (int j = 1; j < i; j++) {
- dp[i][j] = a[i][j] + max (dp[i-1][j-1], dp[i-1][j]);
- }
- dp[i][i] = a[i][i] + dp[i-1][i-1];
- }
- long M = 0;
- for(int j = 0; j < N; j++) {
- if (M < dp[N-1][j]) M = dp[N-1][j];
- }
- printf ("%ld", M);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement