// doesnt calc circles
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
// #define F first
// #define S second
#include "boxes.h"
ll delivery(int N, int K, int L, int p[]) {
// never optimal to take more than one full circle
vector<ll> dp(N);
ll mxL= 0, mxR = 0;
FOR(i, N) {
if (p[i] <= L/2) {
if (i-K >= 0) dp[i] = dp[i-K] + 2*p[i];
else dp[i] = 2*p[i];
mxL = max(mxL, dp[i]);
} else {
if (i+K <= N) dp[i] = dp[(i+K)%N] + 2*(L-p[i]);
else dp[i] = 2*(L-p[i]);
mxR = max(mxR, dp[i]);
}
}
cout << mxL + mxR << endl;
return mxL+mxR;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |