Submission #720544

#TimeUsernameProblemLanguageResultExecution timeMemory
720544lamCatfish Farm (IOI22_fish)C++17
0 / 100
52 ms8760 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...