#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define pll pair<ll,ll>
#define pii pair<int,int>
#define ld long double
using namespace std;
const int N = 3e5+2;
int n,m,k;
ll mal_res[N],DP[N];
vector<vector<ll>>stosy_rosn;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m >> k;
vector<ll>prefmal;
for(int i = 1;i <= n;i++){
vector<ll>v(m);
for(int j = 0;j < m;j++)cin >> v[j];
if(v.front() >= v.back())
for(auto x: v)
prefmal.pb(x);
else{
for(int j = 1;j < m;j++)v[j] += v[j-1];
stosy_rosn.pb(v);
}
}
sort(prefmal.rbegin(),prefmal.rend());
for(int i = 1;i <= prefmal.size();i++)mal_res[i] = mal_res[i-1] + prefmal[i-1];
for(auto v: stosy_rosn)
for(int i = m*stosy_rosn.size();i >= 1;i--)
for(int j = 0;i + j <= m * stosy_rosn.size() && j < m;j++)
DP[i+j] = max(DP[i+j],DP[i-1] + v[j]);
ll res = 0;
for(int i = 0;i <= k;i++)res = max(res,mal_res[i] + DP[k-i]);
cout << res << "\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 | #include<bits/stdc++.h> #define ll long long #define pb push_back #define pll pair<ll,ll> #define pii pair<int,int> #define ld long double using namespace std; const int N = 3e5+2; int n,m,k; ll mal_res[N],DP[N]; vector<vector<ll>>stosy_rosn; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m >> k; vector<ll>prefmal; for(int i = 1;i <= n;i++){ vector<ll>v(m); for(int j = 0;j < m;j++)cin >> v[j]; if(v.front() >= v.back()) for(auto x: v) prefmal.pb(x); else{ for(int j = 1;j < m;j++)v[j] += v[j-1]; stosy_rosn.pb(v); } } sort(prefmal.rbegin(),prefmal.rend()); for(int i = 1;i <= prefmal.size();i++)mal_res[i] = mal_res[i-1] + prefmal[i-1]; for(auto v: stosy_rosn) for(int i = m*stosy_rosn.size();i >= 1;i--) for(int j = 0;i + j <= m * stosy_rosn.size() && j < m;j++) DP[i+j] = max(DP[i+j],DP[i-1] + v[j]); ll res = 0; for(int i = 0;i <= k;i++)res = max(res,mal_res[i] + DP[k-i]); cout << res << "\n"; } |
English