#include "fish.h"
#include<bits/stdc++.h>
#define int long long
#define vi vector<int>
#define pb push_back
#define f0r(i,n) for(int i = 0; i<n; i++)
#define FOR(i, k, n) for(int i = k; i<n; i++)
#define vout(v) for(auto u : v)cout<<u<<' '; cout<<'\n';
using namespace std;
vector<vector<int>>s;
int sum(int col, int l, int r){
if(l > r)return 0;
if(l == 0)return s[col][r];
else return s[col][r] - s[col][l-1];
}
int max_weights(signed n, signed m, std::vector<signed> x, std::vector<signed> y,
std::vector<signed> w) {
int ans = 0;
vector<vi>grid(n, vi(n));
f0r(i,m){
grid[x[i]][y[i]] = w[i];
}
vector<vi>s(n, vi(n));
f0r(i, n){
s[i][0] = grid[i][0];
FOR(j, 1, n)s[i][j] = s[i][j-1] + grid[i][j];
}
::s = s;
/*
f0r(i,n){
f0r(j, n)cout<<s[i][j]<<' ';
cout<<'\n';
}
*/
int kaw = min(9, n+1);
// vout(v);
// cout<<sum(0, 0, 5)<<"hi"<<'\n';
vector<vector<vi>> dp(n, vector<vi>(kaw, vi(kaw)));
f0r(i, kaw){
f0r(j, kaw){
dp[1][i][j] = sum(0, i, j-1);
}
}
FOR(i, 2, n){
f0r(j, kaw){
f0r(k, kaw){
f0r(l, kaw){
if(k < j)dp[i][j][k] = max(dp[i][j][k], dp[i-1][l][j] + sum(i, k, j-1));
else dp[i][j][k] = max(dp[i][j][k], dp[i-1][l][j] + sum(i-1, max(l,j), k-1));
}
}
}
}
/*
f0r(i, kaw){
f0r(j, kaw){
cout<<dp[1][i][j]<<' ';
}
cout<<'\n';
}
*/
f0r(i, kaw)f0r(j,kaw)ans = max(ans, dp[n-1][i][j]);
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |