Smallest and Easiest one (Beats 100% of Users)
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity: O(N*M)\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity: O(1)\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution {\npublic:\n    int maxScore(vector<vector<int>>& v) {\n        int n=v.size(),m=v[0].size();\n        int ans=INT_MIN,c;\n        for(int i=n-1;i>=0;i--){\n            for(int j=m-1;j>=0;j--)\n            {\n                c=INT_MIN;\n                if(i+1<n) c=v[i+1][j];\n                if(j+1<m) c=max(c,v[i][j+1]);\n                if(c!=INT_MIN) ans=max(ans,c-v[i][j]);\n                v[i][j]=max(v[i][j],c);\n            }\n        }\n        return ans;\n    }\n};\nauto init = []()\n{ \n    ios::sync_with_stdio(0);\n    cin.tie(0);\n    cout.tie(0);\n    return \'c\';\n}();\n```
['Dynamic Programming']