Submission #1133980

#TimeUsernameProblemLanguageResultExecution timeMemory
1133980NamkhingNile (IOI24_nile)C++20
67 / 100
2094 ms5640 KiB
#include "nile.h"
#include <bits/stdc++.h>
#define f first
#define s second
using namespace std;

using ll = long long;
using pipii = pair<int, pair<int, int>>;
const ll inf = 1e18;

const int N = 1e5 + 10;
int n, q;
pipii a[N];
ll dp[N];

vector<ll> calculate_costs(vector<int> W, vector<int> A, vector<int> B, vector<int> E) {
    n = W.size(), q = E.size();
    for (int i = 1; i <= n; i++) a[i] = {W[i-1], {A[i-1], B[i-1]}};
    sort(a + 1, a + n + 1);
    vector<ll> ans;
    for (int d : E) {
        for (int i = 1; i <= n; i++) {
            dp[i] = inf;
            if (i >= 3 && abs(a[i].f - a[i-2].f) <= d) dp[i] = min(dp[i], dp[i-3] + a[i].s.s + a[i-1].s.f + a[i-2].s.s);
            if (i >= 2 && abs(a[i].f - a[i-1].f) <= d) dp[i] = min(dp[i], dp[i-2] + a[i].s.s + a[i-1].s.s);
            dp[i] = min(dp[i], dp[i-1] + a[i].s.f);
        }
        ans.push_back(dp[n]);
    }
    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...