Submission #742673

#TimeUsernameProblemLanguageResultExecution timeMemory
742673dsyzBoxes with souvenirs (IOI15_boxes)C++17
25 / 100
1 ms300 KiB
#include <bits/stdc++.h>
#include "boxes.h"
using namespace std;
using ll = long long;
#define MAXN (1000005)

long long delivery(int N, int K, int L, int p[]) {
    ll minimum = 5e18;
    ll clockwise[N + 5];
    memset(clockwise,0,sizeof(clockwise));
    for(ll i = 0;i < N;i++){
		if(i < K){
			clockwise[i] = 2 * p[i];
		}else{
			clockwise[i] = clockwise[i - K] + (2 * p[i]);
		}
	}
	ll anticlockwise[N + 5];
	memset(anticlockwise,0,sizeof(anticlockwise));
	for(ll i = N - 1;i >= 0;i--){
		if(i >= N - K){
			anticlockwise[i] = 2 * (L - p[i]);
		}else{
			anticlockwise[i] = anticlockwise[i + K] + (2 * (L - p[i]));
		}
	}
	minimum = min(minimum,clockwise[N - 1]);
	minimum = min(minimum,anticlockwise[0]);
	for(ll i = 0;i < N - 1;i++){
		minimum = min(minimum,clockwise[i] + anticlockwise[i + 1]);
	}
	for(ll i = K;i < N;i++){
		minimum = min(minimum,clockwise[i - K] + anticlockwise[i + 1] + L);
	}
	return minimum;
}
#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...