Submission #1226532

#TimeUsernameProblemLanguageResultExecution timeMemory
1226532ericl23302Catfish Farm (IOI22_fish)C++20
12 / 100
57 ms15176 KiB
#include "fish.h"
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

long long max_weights(int N, int M, std::vector<int> X, std::vector<int> Y, std::vector<int> W) {
    vector<ll> vals(N, 0);
    for (int i = 0; i < M; ++i) vals[X[i]] += W[i];
    vector<vector<ll>> dp(N + 1, vector<ll>(4, 0));
    dp[0][1] = dp[0][2] = dp[0][3] = LLONG_MIN / 2;
    for (int i = 0; i < N; ++i) {
        vector<ll> &prevDp = dp[i], &curDp = dp[i + 1];
        for (int a = 0; a < 4; ++a) {
            for (int b = 0; b < 4; ++b) {
                if ((a % 2) + (b < 2) != 1) continue;
                if (b % 2 == 0) {
                    if (a % 2) curDp[b] = max(curDp[b], prevDp[a] + vals[i]);
                    else curDp[b] = max(curDp[b], prevDp[a]);
                } else {
                    if (a) curDp[b] = max(curDp[b], prevDp[a]);
                    else curDp[b] = max(curDp[b], prevDp[a] + (i ? vals[i - 1] : 0));
                }
            }
        }
    }

    return *max_element(dp[N].begin(), dp[N].end());
}
#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...