Submission #1181674

#TimeUsernameProblemLanguageResultExecution timeMemory
118167412345678Nile (IOI24_nile)C++20
67 / 100
2092 ms6788 KiB
#include "nile.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long

const int nx=1e5+5;

struct info
{
    ll w, a, b;
    info(ll w=0, ll a=0, ll b=0): w(w), a(a), b(b){}
    bool operator< (const info &o) const {return w<o.w;}
} d[nx];

ll n, dp[nx];
vector<ll> res;

std::vector<long long> calculate_costs(std::vector<int> W, std::vector<int> A,
                                       std::vector<int> B, std::vector<int> E) {
    n=W.size();
    for (int i=1; i<=n; i++) d[i]=info(W[i-1], A[i-1], B[i-1]);
    sort(d+1, d+n+1); 
    for (int t=0; t<E.size(); t++)
    {
        for (int i=1; i<=n; i++)
        {
            dp[i]=dp[i-1]+d[i].a;
            if (i>1&&d[i].w-d[i-1].w<=E[t]) dp[i]=min(dp[i], dp[i-2]+d[i].b+d[i-1].b);
            if (i>2&&d[i].w-d[i-2].w<=E[t]) dp[i]=min(dp[i], dp[i-3]+d[i-2].b+d[i-1].a+d[i].b);
        }
        res.push_back(dp[n]);
    }
    return res;
}
#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...