Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <map>
- using namespace std;
- int mat[110][110];
- int dp[110][110];
- int rec (int i, int j)
- {
- if (i==0 and j==0)
- { return mat[0][0];}
- if (mat[i][j]==-1)
- {
- return 0;
- }
- if (dp[i][j]!=-1)
- {
- return dp[i][j];
- }
- int sum=1e9;
- if ( j>0)
- { sum=min(sum, rec(i, j-1)+ mat[i][j]);
- }
- if (i>0)
- { sum = min(sum, rec(i-1, j) + mat[i][j]);
- }
- if (i>0 and j>0)
- {
- sum = min(sum, rec(i-1,j-1) + mat[i][j]);
- }
- dp[i][j]=sum;
- return sum;
- }
- int main()
- {
- int n;
- cin>>n;
- for (int i=0;i<n+5;i++)
- {
- for (int j=0;j<n+5;j++)
- {
- dp[i][j]=-1;
- mat[i][j]=-1;
- }
- }
- for (int i=0; i<n;i++)
- {
- for (int j=0; j < n - i ;j++)
- {
- cin>>mat[i][j];
- }
- }
- int najmal= 1e9;
- int x,y;
- for (int i=0;i<n;i++)
- {
- if (rec(i, n-1-i) < najmal)
- {
- najmal = rec(i, n - 1 - i) ;
- x=i;
- y= n-1-i;
- }
- }
- cout<<rec(x,y)<<endl;
- cout<<x + 1<<" "<<y + 1<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment