#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
ll n, m, k;
cin >> n >> m >> k;
vector<vector<ll>> zapis(n+1, vector<ll>(m+1, 0));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int a;
cin >> a;
zapis[i][j] = zapis[i][j-1]+a;
}
}
ll p = k;
vector<pair<bool, ll>> q(p+1, {false, INT_MIN});
q[0] = {true, 0};
for(int i=1; i<=n; i++)
{
vector<pair<ll, ll>> kirk;
for(int j=1;j<=m;j++)
{
ll a = j, b = zapis[i][j];
for(int j=p-a; j>=0; j--)
{
ll war = 0, koszt = 0;
if(q[j].first==true && j+a<=p)
{
ll maks = max(q[j+a].second, q[j].second + b);
kirk.push_back({j+a, maks});
}
}
}
for(auto y: kirk)
{
q[y.first].first = true;
q[y.first].second = max(q[y.first].second, y.second);
}
}
ll maks = 0;
for(int i=0; i<=p; i++)
{
maks = max(q[i].second, maks);
}
cout << maks<<'\n';
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | #include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll n, m, k; cin >> n >> m >> k; vector<vector<ll>> zapis(n+1, vector<ll>(m+1, 0)); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { int a; cin >> a; zapis[i][j] = zapis[i][j-1]+a; } } ll p = k; vector<pair<bool, ll>> q(p+1, {false, INT_MIN}); q[0] = {true, 0}; for(int i=1; i<=n; i++) { vector<pair<ll, ll>> kirk; for(int j=1;j<=m;j++) { ll a = j, b = zapis[i][j]; for(int j=p-a; j>=0; j--) { ll war = 0, koszt = 0; if(q[j].first==true && j+a<=p) { ll maks = max(q[j+a].second, q[j].second + b); kirk.push_back({j+a, maks}); } } } for(auto y: kirk) { q[y.first].first = true; q[y.first].second = max(q[y.first].second, y.second); } } ll maks = 0; for(int i=0; i<=p; i++) { maks = max(q[i].second, maks); } cout << maks<<'\n'; } |
English