Submission #154087

#TimeUsernameProblemLanguageResultExecution timeMemory
154087dennisstarBoxes with souvenirs (IOI15_boxes)C++11
0 / 100
2 ms376 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> V, v;
long long delivery(int N, int K, int L, int p[]) {
	int l=0, i;
	long long ans=0;
	V.resize(N);
	for (i=0; i<N; i++) {if (p[i]>=L/2) {l=i; break;}}
	for (i=K-1; i<l; i+=K) {ans+=(long long)(p[i]*2);}
	for (i=max(i-K+1, 0); i<l; i++) {V[i]=1;}
	for (i=N-K; i>=l; i-=K) {ans+=(long long)((L-p[i])*2);}
	for (i=min(i+K-1, N-1); i>=l; i--) {V[i]=1;}
	v.push_back(0);
	for (i=0; i<N; i++) {if (V[i]) v.push_back(p[i]);}
	v.push_back(L);
	int mx=0;
	for (i=max(0, (int)v.size()-K-2); i<min(K+1, (int)v.size()-1); i++) {mx=max(mx, v[i+1]-v[i]);}
	//for (int j:v) printf("%d ", j); puts("");
	ans+=(long long)(2*L-2*mx);
	//printf("%lld\n", ans);
	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...