#include <bits/stdc++.h>
using namespace std;
inline int read(){
int s = 0,f = 1;char c = getchar();
while (!isdigit(c)){if (c == '-')f = -1;c = getchar();}
while (isdigit(c)){s = (s << 3) + (s << 1) + (c ^ 48);c = getchar();}
return s*f;
}
const int N = 105;
int s,n,m;
int dp[N][N * N * 4];
int a[N][N];
int main()
{
s = read(); n = read(); m = read();
for (int i=1;i<=s;++i)
for (int j=1;j<=n;++j)
a[j][i] = read();
for (int i=1;i<=n;i++)
sort(a[i]+1,a[i]+s+1);
for (int i=1;i<=n;++i){
for (int k = 0;k <= m;++k){
for (int j=1;j<=s;j++){
int cnt = 2 * a[i][j] + 1;
if (k >= cnt) dp[i][k] = max({dp[i][k],dp[i-1][k - cnt] + i * j});
else dp[i][k] = max({dp[i][k],dp[i-1][k]});
if (k != 0)
dp[i][k] = max(dp[i][k],dp[i][k-1]);
}
}
}
cout << dp[n][m] << endl;
return 0;
}
这真的是太奇怪了。