55 lines
820 B
C++
55 lines
820 B
C++
#include <iostream>
|
|
using namespace std;
|
|
#include <cstdio>
|
|
#include <cstring>
|
|
#include <cmath>
|
|
|
|
int ts[101][101],k[101][101];
|
|
int we[1000001],va[1000001];
|
|
int f[101];
|
|
int tot,ans;
|
|
|
|
int main()
|
|
{
|
|
memset(f,0xaf,sizeof(f));
|
|
f[0]=0;
|
|
int n,m,ti,a;
|
|
cin>>n>>m>>ti>>a;
|
|
for (int i=1; i<=n; i++)
|
|
{
|
|
for (int j=1; j<=m; j++)
|
|
{
|
|
cin>>ts[i][j];
|
|
}
|
|
}
|
|
|
|
for (int i=1; i<=n; i++)
|
|
{
|
|
for (int j=1; j<=m; j++)
|
|
{
|
|
cin>>k[i][j];
|
|
if (ts[i][j]>0)
|
|
{
|
|
for (int p=tot+1; p<=tot+k[i][j]; p++)
|
|
{
|
|
we[p]=(i+j)*2;
|
|
va[p]=ts[i][j];
|
|
}
|
|
|
|
}
|
|
tot+=k[i][j];
|
|
}
|
|
}
|
|
|
|
for (int i=1; i<=tot; i++)
|
|
for (int v=min(ti,a-1); v>=0; v--)
|
|
{
|
|
if (v-we[i]<0) break;
|
|
f[v]=max(f[v],f[v-we[i]]+va[i]);
|
|
ans=max(ans,f[v]);
|
|
}
|
|
|
|
cout<<ans;
|
|
}
|
|
|
|
|