Submission #1017534

#TimeUsernameProblemLanguageResultExecution timeMemory
1017534DorostWefBoxes with souvenirs (IOI15_boxes)C++17
100 / 100
475 ms293764 KiB
#include "boxes.h"

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int MN = 1e7 + 10;
ll ps[MN], ss[MN];

long long delivery(int N, int K, int L, int p[]) {
	int n = N, k = K, l = L;
    for (int i = 0; i < n; i++) {
    	if (i < k) {
    		ps[i] = 2 * p[i];
		} else {
			ps[i] = 2 * p[i] + ps[i - k];
		}
	}
	for (int i = n - 1; i >= 0; i--) {
		if (i >= n - k) {
			ss[i] = 2 * (l - p[i]);
		} else {
			ss[i] = 2 * (l - p[i]) + ss[i + k];
		}
	}
	ll ans = min (ps[n - 1], ss[0]);
	for (int i = 0; i < n - 1; i++) {
		ans = min(ans, ps[i] + ss[i + 1]);
	}
	for (int i = 0; i < n - k - 1; i++) {
		ans = min(ans, ps[i] + ss[i + k + 1] + l);
	}
	ans = min(ans, ss[k] + l);
	ans = min(ans, ps[n - k - 1] + 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...