This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "fish.h"
#include <vector>
#define ll long long
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
#define ff first
#define ss second
const int maxn = 3e5 + 10;
int n,m;
ii a[maxn]; int w[maxn];
bool cmp(int x, int y)
{
return a[x]<a[y];
}
ll sub3()
{
vector <ll> b(n,0);
for (int i=0; i<m; i++)
b[a[i].ff] += w[i];
vector <ll> dp[3];
for (int i=0; i<3; i++) dp[i].assign(n,0);
dp[1][0] = b[0];
for (int i=0; i+1<n; i++)
{
for (int j=0; j<3; j++)
{
if (j==1) dp[2][i+1] = max(dp[2][i+1],dp[j][i]+b[i+1]);
else dp[0][i+1] = max(dp[0][i+1],dp[j][i]);
int val=0;
if (j==0) val+=b[i];
dp[1][i+1] = max(dp[1][i+1],dp[j][i]+val);
}
}
int ans=max(dp[0][n-1],max(dp[1][n-1],dp[2][n-1]));
return ans;
}
long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y,
std::vector<int> W) {
n=N; m=M;
for (int i=0; i<m; i++) a[i]={X[i],Y[i]}, w[i]=W[i];
return sub3();
}
# | 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... |