Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const unsigned MAXN = 1001;
- long long m[MAXN][MAXN], n, k, maxDiff, maxD, md[5000], ind = 0;
- int main(){
- while( cin >> n >> k ){
- //memset( m, 0, n*n );
- /*
- for( int i=1; i<=n; i++ ){
- m[i][0] = -1000;
- m[0][i] = -1000;
- }
- */
- maxDiff = maxD = 0;
- for( int i=1; i<=n; i++ ){
- for( int j=1; j<=n; j++ ){
- cin >> m[i][j];
- /* if( i == 1 ) {
- maxDiff = m[i][j]+ m[i][j-1];
- if( maxDiff > maxD ) maxD = maxDiff;
- }
- if( j == 1 ) {
- maxDiff = m[i][j]+ m[i-1][j];
- if( maxDiff > maxD ) maxD = maxDiff;
- }
- if(m[i-1][j] > m[i][j-1]){
- maxDiff = m[i][j]+ m[i-1][j];
- if( maxDiff > maxD ) maxD = maxDiff;
- }
- else {
- maxDiff = m[i][j]+ m[i][j-1];
- if( maxDiff > maxD ) maxD = maxDiff;
- } */
- }
- }
- for( int i=1; i<=n; i++ ){
- for( int j=1; j<=n; j++ ){
- if( i == 1 ) {
- m[i][j] += m[i][j-1];
- }
- if( j == 1 ) {
- m[i][j] += m[i-1][j];
- }
- if(m[i-1][j] > m[i][j-1] && j != 1){
- md[ind++] = i;
- m[i][j] += m[i-1][j];
- }
- else if (i != 1) {
- md[ind++] = j;
- m[i][j] += m[i][j-1];
- }
- }
- cout << ( m[n][n] + k*maxD ) << endl;
- }
- return 0;
- }
- /*
- 3 1
- 1 1 0
- 1 1 0
- 1 1 1
- 4 4
- 1 1 1 0
- 1 0 1 0
- 1 1 1 0
- 0 0 1 1
- 4 4
- 1 1 1 0
- 1 0 1 0
- 1 1 0 0
- 0 0 1 1
- 4 4
- -1 -1 -1 0
- -1 0 -1 0
- -1 -1 0 0
- 0 0 -1 -1
- 4 4
- -1 -1 -1 -1
- -1 -1 -1 -1
- -1 -1 -1 -1
- -1 -1 -1 -1
- 3 1
- 1 1 0
- 1 1 0
- 1 1 1
- 3 1
- 1000 -1000 0
- -1000 1000 0
- 1 1 1
- 2 3
- 0 10
- 0 20
- 2 4
- 0 10
- 0 20
- 2 0
- 1 4
- 6 20
- 2 1
- 1 4
- 6 20
- 2 2
- 1 4
- 6 20
- */
Advertisement
Add Comment
Please, Sign In to add comment