VasilM

J

Jan 12th, 2013
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.47 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const unsigned MAXN = 1001;
  6. long long m[MAXN][MAXN], n, k, maxDiff, maxD, md[5000], ind = 0;
  7.  
  8. int main(){
  9.     while( cin >> n >> k ){
  10.            //memset( m, 0, n*n );
  11.            /*
  12.            for( int i=1; i<=n; i++ ){
  13.                 m[i][0] = -1000;
  14.                 m[0][i] = -1000;  
  15.            }
  16.            */
  17.            maxDiff = maxD = 0;
  18.            
  19.            for( int i=1; i<=n; i++ ){
  20.                 for( int j=1; j<=n; j++ ){
  21.                      cin >> m[i][j];
  22.                    /*  if( i == 1 ) {
  23.                            maxDiff = m[i][j]+ m[i][j-1];
  24.                            if( maxDiff > maxD ) maxD = maxDiff;
  25.                      }
  26.                      if( j == 1 ) {
  27.                            maxDiff = m[i][j]+ m[i-1][j];
  28.                            if( maxDiff > maxD ) maxD = maxDiff;
  29.                      }
  30.                          
  31.                      if(m[i-1][j] > m[i][j-1]){  
  32.                                   maxDiff = m[i][j]+ m[i-1][j];
  33.                                   if( maxDiff > maxD ) maxD = maxDiff;
  34.                       }
  35.                       else {
  36.                                   maxDiff = m[i][j]+ m[i][j-1];
  37.                                   if( maxDiff > maxD ) maxD = maxDiff;
  38.                       }     */      
  39.                 }
  40.            }
  41.            
  42.            for( int i=1; i<=n; i++ ){
  43.                 for( int j=1; j<=n; j++ ){
  44.                      if( i == 1 ) {
  45.                            m[i][j] += m[i][j-1];  
  46.                      }
  47.                      if( j == 1 ) {
  48.                            m[i][j] += m[i-1][j];
  49.                      }
  50.                      if(m[i-1][j] > m[i][j-1] && j != 1){
  51.                            md[ind++] = i;    
  52.                            m[i][j] += m[i-1][j];
  53.                      }
  54.                      else if (i != 1) {
  55.                           md[ind++] = j;
  56.                            m[i][j] += m[i][j-1];                          
  57.                 }
  58.            }
  59.            cout << ( m[n][n] + k*maxD ) << endl;
  60.     }
  61.     return 0;
  62. }
  63. /*
  64. 3 1
  65. 1 1 0
  66. 1 1 0
  67. 1 1 1
  68. 4 4
  69. 1 1 1 0
  70. 1 0 1 0
  71. 1 1 1 0
  72. 0 0 1 1
  73. 4 4
  74. 1 1 1 0
  75. 1 0 1 0
  76. 1 1 0 0
  77. 0 0 1 1
  78. 4 4
  79. -1 -1 -1 0
  80. -1 0 -1 0
  81. -1 -1 0 0
  82. 0 0 -1 -1
  83. 4 4
  84. -1 -1 -1 -1
  85. -1 -1 -1 -1
  86. -1 -1 -1 -1
  87. -1 -1 -1 -1
  88. 3 1
  89. 1 1 0
  90. 1 1 0
  91. 1 1 1
  92. 3 1
  93. 1000 -1000 0
  94. -1000 1000 0
  95. 1 1 1
  96. 2 3
  97. 0 10
  98. 0 20
  99. 2 4
  100. 0 10
  101. 0 20
  102. 2 0
  103. 1 4
  104. 6 20
  105. 2 1
  106. 1 4
  107. 6 20
  108. 2 2
  109. 1 4
  110. 6 20
  111. */
Advertisement
Add Comment
Please, Sign In to add comment