Cho một ma trận các số nguyên có kích thước ~N\times N~. Lúc đầu chúng ta đứng tại ô tọa độ ~(1,1)~.
Chúng ta có thể di chuyển xuống dưới hoặc sang phải. Điều này có nghĩa là nếu chúng ta đứng ở ô ~(i, j)~ thì có thể di chuyển đến ô ~(i + 1, j)~ hoặc ~(i, j + 1)~.
Mặt khác chúng ta được phép di chuyển tối đa ~K~ bước sang trái hoặc lên trên. Có nghĩa là nếu chúng ta đứng ở ô ~(i, j)~ thì có thể di chuyển đến ô ~(i, j - 1)~ hoặc ~(i - 1, j)~.
Chúng ta không thể di chuyển ra ngoài ma trận. Khi chúng ta di chuyển tới một ô (bao gồm cả ô xuất phát ~(1, 1)~), chúng ta cộng số nguyên trong ô này vào tổng. Nếu chúng ta đi vào một ô nhiều hơn một lần thì mỗi lần đi vào chúng ta lại cộng số nguyên ở ô này vào tổng. Ban đầu tổng bằng ~0~.
Bạn hãy viết một chương trình tính tổng lớn nhất có thể, bắt đầu từ ô ~(1, 1)~ và kết thúc ở ô ~(N, N)~ với các bước di chuyển được mô tả như ở trên.
Dữ liệu vào:
- Dòng đầu tiên chứa hai số nguyên ~N~ và ~K\ (2\leq N\leq 1000; 0\leq K\leq 100)~.
- Tiếp theo có ~N~ dòng, mỗi dòng chứa ~N~ số nguyên có giá trị thuộc đoạn ~[-1000;1000]~ là các phần tử của ma trận đã cho.
Dữ liệu ra:
- Gồm một dòng chứa tổng lớn nhất của việc di chuyển bắt đầu từ ô ~(1, 1)~ và kết thúc ở ô ~(N, N)~ với các bước di chuyển được mô tả như ở trên.
Input 1:
3 1
1 1 0
1 1 0
1 1 1
Output 1:
7
Input 2:
4 4
1 1 1 0
1 0 1 0
1 1 1 0
0 0 1 1
Output 2:
15
Giới hạn:
- Có ~33\%~ số test ứng với ~33\%~ số điểm của bài có ~n, k\leq 10~.
- Có ~66\%~ số test còn lại ứng với ~66\%~ số điểm của bài không có ràng buộc gì thêm.
Bình luận