Submission #1260941

#TimeUsernameProblemLanguageResultExecution timeMemory
1260941rayan_bdCatfish Farm (IOI22_fish)C++20
0 / 100
1096 ms6580 KiB
#include "fish.h"
#include <bits/stdc++.h>
using namespace std;

static long long dp[305][305];
static long long ndp[305][305];

long long max_weights(int N, int M, vector<int> X, vector<int> Y, vector<int> W) {
    vector<vector<pair<int,int>>> fish(N+1);
    for (int i = 0; i < M; i++) {
        fish[X[i]+1].push_back({Y[i]+1, W[i]});
    }

    for (int h = 0; h <= N; h++) dp[0][h] = 0;

    for (int c = 1; c <= N; c++) {
        for (int h = 0; h <= N; h++) ndp[c][h] = LLONG_MIN;

        for (int h = 0; h <= N; h++) {
            for (int k = 0; k <= N; k++) {
                if (dp[c-1][k] == LLONG_MIN) continue;
                long long add = 0;
                for (auto [y, w] : fish[c]) {
                    if (y >= h && k > y) {
                        add += w;
                    }
                }
                ndp[c][h] = max(ndp[c][h], dp[c-1][k] + add);
            }
        }

        for (int h = 0; h <= N; h++) dp[c][h] = ndp[c][h];
    }

    long long ans = 0;
    for (int h = 0; h <= N; h++) ans = max(ans, dp[N][h]);
    return ans;
}
#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...