Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- int n,m;
- int board[210][210];
- int max(int a,int b){
- return (a > b ? a : b);
- }
- int min(int a,int b){
- return (a < b ? a : b);
- }
- int dpmax[210][210];
- int dpmin[210][210];
- int calmax(int I,int J){
- if(I >= n || J >= m){
- return -1e9;
- }
- if(I == n - 1 && J == m - 1){
- return board[I][J];
- }
- if(dpmax[I][J] != -1)return dpmax[I][J];
- return dpmax[I][J] = max(calmax(I+1,J),calmax(I,J+1)) + board[I][J];
- }
- int calmin(int I,int J){
- if(I >= n || J >= m){
- return 1e9;
- }
- if(I == n - 1 && J == m - 1){
- return board[I][J];
- }
- if(dpmin[I][J] != -1)return dpmin[I][J];
- return dpmin[I][J] = min(calmin(I+1,J),calmin(I,J+1)) + board[I][J];
- }
- int main()
- {
- for(int i = 0 ; i < 210 ; i ++){
- for(int j = 0 ; j < 210 ; j ++){
- dpmax[i][j] = -1;
- dpmin[i][j] = -1;
- }
- }
- scanf("%d %d",&n,&m);
- for(int i = n - 1 ; i >= 0 ; i --){
- for(int j = 0 ; j < m ; j ++){
- scanf("%d",&board[i][j]);
- }
- }
- printf("%d",calmax(0,0) - calmin(0,0));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement