class Solution {
public:
  /*
  * @param triangle: a list of lists of integers
  * @return: An integer, minimum path sum
  */
  int minimumTotal(vector<vector<int>> &triangle) {
    // write your code here
  int row = triangle.size();
  if(row < 1)
  return 0;
  if(row == 1)
  return triangle[0][0];
  for(int i=row-2;i>=0;i--)
    for(int j=0;j<triangle[i].size();j++) {
      if(triangle[i+1][j]>triangle[i+1][j+1])
        triangle[i][j] = triangle[i+1][j+1]+triangle[i][j];
      else
        triangle[i][j] = triangle[i+1][j]+triangle[i][j];
    }
  return triangle[0][0];
  }
};