Submission #176025

#TimeUsernameProblemLanguageResultExecution timeMemory
176025Peacher29Boxes with souvenirs (IOI15_boxes)C++14
100 / 100
1227 ms434568 KiB
#include "boxes.h"
#include<bits/stdc++.h>

using namespace std;

class pont{
public:
	int elotte;
	int utana;
	int hely;
	
	long long vissza;
	
	long long elolrol;
	long long hatulrol;
};

vector<pont> p;

long long delivery(int n, int k, int l, int in[]) {
	p.resize(n+1);
	for(int i=0;i<=n;i++){
		p[i].elotte = (i-1+n+1)%(n+1);
		p[i].utana = (i+1)%(n+1);
	}
	p[0].hely=0;
	for(int i=1;i<=n;i++){
		p[i].hely=in[i-1];
	}
	for(int i=1;i<=n;i++){
		p[i].vissza= min (
			p[i].hely, l-p[i].hely
		);
		p[i].elolrol=p[max(i-k,0)].elolrol+p[i].hely+p[i].vissza;
	}
	if(k==1){
		long long ossz=0;
		for(int i=1;i<=n;i++){
			ossz+=p[i].vissza;
		}
		return ossz*2;
	}
	p[0].hely=l;
	for(int i=n;i>0;i--){
		int mit=i+k;
		if(i+k > n){
			mit=0;
		}
		p[i].hatulrol=p[mit].hatulrol+l-p[i].hely+p[i].vissza;
	}
	long long mn= LLONG_MAX;
	for(int i=0;i<=n;i++){
		mn = min(p[i].elolrol+p[p[i].utana].hatulrol,mn);
	}
return mn;
}
#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...