Submission #420321

#TimeUsernameProblemLanguageResultExecution timeMemory
420321AzimjonBoxes with souvenirs (IOI15_boxes)C++17
20 / 100
1 ms204 KiB
#include "boxes.h"
#include <bits/stdc++.h>

using namespace std;

const int INF = 2e9;

long long delivery(int n, int k, int L, int p[]) {
	long long ans = 0;
	double ur = L / 2;

	int m;
	for (m = 0; m < n; m++)
		if (p[m] > ur) break;

	int l = m - 1;
	int r = m;
	// cout << l << " " << r << endl;
	while (1) {
		if (l - k + 1 >= 0) {
			ans += 2 * p[l];
			l -= k;
		} else
			break;
	}

	while (1) {
		if (r + k - 1 < n) {
			ans += 2 * (L - p[r]);

			r += k;
		} else
			break;
	}

	long long o = 0;

	if (l >= 0) o += 2 * p[l];
	if (r < n) o += 2 * (L - p[r]);

	int q = 0;
	if (l >= 0) q += l + 1;
	if (r < n) q += n - r;

	if (q <= k) {
		o = min(o, (long long)L);
	} else {
		int w = q - k;
		int v = k;

		while (v--) {
			if (l >= 0 && r < n && p[l] < L - p[r]) {
				r++;
			} else if (l >= 0 && r < n) {
				l--;
			} else if (l >= 0) {
				r++;
			} else {
				l--;
			}
		}
		long long uy = 0;
		if (l >= 0) uy += 2 * p[l];
		if (r < n) uy += 2 * (L - p[r]);

		o = min(o, uy + L);
	}

	return ans + o;
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:48:7: warning: unused variable 'w' [-Wunused-variable]
   48 |   int w = q - k;
      |       ^
#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...