#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=100005,M=998244353;
const ll inf=100000000000000000ll;
const ld PI=3.141592653589793238;
int n,a[11][N],m,k;
long long dp[11][N][12];
long long dfs(int i,int j,int l){
if(i>n)
return dfs(1,j+1,max(l,j-k+2));
if(j>m)
return 0;
if(dp[i][j][j-l+1]!=-1)
return dp[i][j][j-l+1];
if(l<=j&&l<=m-k+1)
return dp[i][j][j-l+1]=max({dp[i][j][j-l+1],dfs(i+1,j,l+1)+a[i][j],dfs(i+1,j,l)});
else
return dp[i][j][j-l+1]=dfs(i+1,j,l);
}
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
#endif
scanf("%d %d %d",&n,&m,&k);
memset(dp,-1,sizeof(dp));
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
scanf("%d",&a[i][j]);
cout<<dfs(1,1,1);
}
67A - Partial Teacher | 116A - Tram |
1472B - Fair Division | 1281C - Cut and Paste |
141A - Amusing Joke | 112A - Petya and Strings |
677A - Vanya and Fence | 1621A - Stable Arrangement of Rooks |
472A - Design Tutorial Learn from Math | 1368A - C+= |
450A - Jzzhu and Children | 546A - Soldier and Bananas |
32B - Borze | 1651B - Prove Him Wrong |
381A - Sereja and Dima | 41A - Translation |
1559A - Mocha and Math | 832A - Sasha and Sticks |
292B - Network Topology | 1339A - Filling Diamonds |
910A - The Way to Home | 617A - Elephant |
48A - Rock-paper-scissors | 294A - Shaass and Oskols |
1213A - Chips Moving | 490A - Team Olympiad |
233A - Perfect Permutation | 1360A - Minimal Square |
467A - George and Accommodation | 893C - Rumor |