Submission #1306843

#TimeUsernameProblemLanguageResultExecution timeMemory
1306843michael12Nile (IOI24_nile)C++20
17 / 100
2095 ms4656 KiB
#include <bits/stdc++.h>
#include "nile.h"
using namespace std;

vector<long long> calculate_costs(
    vector<int> W,
    vector<int> A,
    vector<int> B,
    vector<int> E
) {
    int N = W.size();
    int Q = E.size();

    vector<array<int,3>> at(N);
    for (int i = 0; i < N; i++) {
        at[i] = {W[i], A[i], B[i]};
    }

    sort(at.begin(), at.end());

    long long sm = 0;
    for (int i = 0; i < N; i++) {
        sm += at[i][1];
    }

    vector<long long> rs(Q);

    for (int qi = 0; qi < Q; qi++) {
        int D = E[qi];
        vector<long long> dp(N, 0);

        for (int i = 0; i < N; i++) {
            if (i > 0) dp[i] = dp[i - 1];

            for (int j = i - 1; j >= 0; j--) {
                if (at[i][0] - at[j][0] > D) break;

                long long sv =
                    (long long)at[i][1] + at[j][1]
                    - at[i][2] - at[j][2];

                if (j > 0)
                    dp[i] = max(dp[i], dp[j - 1] + sv);
                else
                    dp[i] = max(dp[i], sv);
            }
        }

        rs[qi] = sm - dp[N - 1];
    }

    return rs;
}
#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...