답안 #100167

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
100167 2019-03-09T18:11:27 Z luciocf 선물상자 (IOI15_boxes) C++14
25 / 100
4 ms 512 KB
#include <bits/stdc++.h>
#include "boxes.h"
 
using namespace std;
 
const int maxn = 1e7+10;
 
typedef long long ll;
 
int p[maxn];
 
ll pref[maxn], suf[maxn];
 
long long delivery(int N, int K, int L, int positions[])
{
	int n = N, k = K;
	for (int i = 1; i <= n; i++)
		p[i] = positions[i-1];
 
	int mid = L/2;
	int last_p = 0, last_s = n+1;
 
	if (p[1] < mid) pref[1] = 2ll*(ll)p[1], last_p = 1;
	for (int i = 2; i <= n; i++)
	{
		if (p[i] >= mid) break;
 
		pref[i] = 2ll*(ll)p[i] + pref[max(0, i-k)];
		last_p = i;
	}
 
	if (p[n] >= mid) suf[n] = 2ll*((ll)L-(ll)p[n]), last_s = n;
 
	for (int i = n-1; i >= 1; i--)
	{
		if (p[i] < mid) break;
 
		suf[i] = 2ll*((ll)L-(ll)p[i]) + suf[min(n+1, i+k)];
		last_s = i;
	}
 
	ll ans = pref[last_p] + suf[last_s];
 
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= k; j++)
		{
			if (!last_p && last_s > n) break;
 
			if (!last_p) last_s++;
			else if (last_s > n) last_p--;
			else if (p[last_p] > L-p[last_s]) last_p--;
			else last_s++;
		}
 
		ans = min(ans, 1ll*(ll)i*(ll)L + pref[last_p] + suf[last_s]);
	}
 
	return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 356 KB Output is correct
4 Incorrect 3 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 2 ms 384 KB Output is correct
5 Correct 3 ms 512 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 2 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 3 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 2 ms 384 KB Output is correct
6 Correct 2 ms 384 KB Output is correct
7 Correct 3 ms 384 KB Output is correct
8 Correct 2 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 356 KB Output is correct
4 Incorrect 3 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 356 KB Output is correct
4 Incorrect 3 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 2 ms 384 KB Output is correct
3 Correct 2 ms 356 KB Output is correct
4 Incorrect 3 ms 384 KB Output isn't correct
5 Halted 0 ms 0 KB -