Submission #1293363

#TimeUsernameProblemLanguageResultExecution timeMemory
1293363goulthenBoxes with souvenirs (IOI15_boxes)C++20
100 / 100
373 ms204072 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define rep(i,a,b) for (int i = a; i <= b; i++)
#define per(i,a,b) for (int i = a; i >= b; i--)
#define pb push_back

long long delivery(int N, int K, int L, int p[]) {
    vector<ll> dp(N+1,0LL), dp2(N+1,0LL), sum(K,0LL);

    rep(i,0,N-1) {
        sum[i%K]+=p[i];
        dp[i+1] = 2*sum[i%K];
    }
    fill(sum.begin(),sum.end(),0LL);
    per(i,N-1,0) {
        sum[i%K]+=L-p[i];
        dp2[N-i] = 2*sum[i%K];
    }
    //rep(i,0LL,N-1) cout << dp[i] << ' ' << dp2[i] << '\n';
    ll ans = 1e18+10;
    rep(i,0,N) ans = min(ans, dp[i]+dp2[N-i]);
    rep(i,0,N-K) ans = min(ans, dp[i]+dp2[N-i-K]+L);

    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...