Submission #61746

#TimeUsernameProblemLanguageResultExecution timeMemory
61746nvmdavaBoxes with souvenirs (IOI15_boxes)C++17
0 / 100
2 ms376 KiB
#include "boxes.h"
#include<bits/stdc++.h>
using namespace std;

long long delivery(int n, int k, int l, int p[]) {
	vector<int> v;
	int i = 0;
	
	while(p[i] == 0){
		i++;
	}
	
	v.insert(v.begin(),p + i, p + n);
	
	long long ans = 0;
	
	n  = v.size();
	int le = n;
	i = k - 1;
	while( i < n && p[i] * 2 < l){
		ans += (long long)p[i];
		le -= k;
		i += k;
	}
	int j = i - k;
	i = n - k;
	while(i >= 0 && p[i] * 2 > l){
		ans += (long long)l - p[i];
		i -= k;
		le -= k;
	}
	i += k;
	ans *= 2;
	ans += le / k * l;
	le %= k;
	if(le != 0){
		le = k - l;
		for(int t = 0; t <= le ;t++){
			if(t > j || i +le - t >= n){
				break;
			}
			ans = min(ans , ans - p[j] * 2 - (l - p[i]) * 2 + p[j - t] * 2 + (l - p[i + le - t]) * 2);
		}
	}
	return ans;
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:17:13: warning: conversion to 'int' from 'std::vector<int>::size_type {aka long unsigned int}' may alter its value [-Wconversion]
  n  = v.size();
       ~~~~~~^~
#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...