#include #include #include int N,M,D; // rows, cols, d->разстояние std::vector< std::vector > matrix; int findDist(int row,int col); int main() { freopen("rabbits.in", "r", stdin); freopen("rabbits.out", "w", stdout); scanf("%d %d %d", &N, &M, &D); matrix.resize(N); int currentPosition; for(int i = 0; i < N; i++) { for(int j = 0; j < M; j++) { scanf("%d", ¤tPosition); matrix[i].push_back(currentPosition); } } int max = -1; int currentMax = -1; for(int i = 0; i < N; i++) { for(int j = 0; j < M; j++) { currentMax = findDist(i, j); if(currentMax >= max) max = currentMax; } } printf("%d ", max); return 0; } int findDist(int row,int col) { if(D + col < M) { int dCol = D; return matrix[row][col] + matrix[row][dCol]; } else { int dRow = (D % N) + 1; if(dRow == N) dRow = 0; int dCol = (D + col) % M; return matrix[row][col] + matrix[dRow][dCol]; } }