#include<iostream>
#include<algorithm>
#include<vector>
#include "fish.h"
using namespace std;
const int MAX_N=1e5+5;
int n,m;
vector<int>x,y,w;
vector<pair<int,long long>>cells[MAX_N];//rows,weight
long long dp[MAX_N];
long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,std::vector<int> W)
{
n=N;
m=M;
x=X;
y=Y;
w=W;
for(int i=0;i<m;i++)
{
cells[x[i]].push_back({y[i],w[i]});
}
for(int i=0;i<n;i++)
{
sort(cells[i].begin(),cells[i].end());
}
long long ans=0;
for(int i=1;i<n;i++)
{
dp[i]=max((cells[i-1].size()>0 ? cells[i-1][0].second : 0),dp[i-1]);
if(i-2>=0)
{
dp[i]=max(dp[i],dp[i-2]+(cells[i-1].size()>0 ? cells[i-1][0].second : 0));
}
if(i-3>=0)
{
dp[i]=max(dp[i],dp[i-3]+(cells[i-1].size()>0 ? cells[i-1][0].second : 0)+
(cells[i-2].size()>0 ? cells[i-2][0].second : 0));
}
}
ans=dp[n-1];
ans=max(ans,dp[n-2]+(cells[n-1].size()>0 ? cells[n-1][0].second : 0));
if(n>=3)ans=max(ans,dp[n-3]+(cells[n-2].size()>0 ? cells[n-2][0].second : 0));
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... |