Submission #1015648

#TimeUsernameProblemLanguageResultExecution timeMemory
1015648MuhammetBoxes with souvenirs (IOI15_boxes)C++17
20 / 100
1 ms416 KiB
#include <bits/stdc++.h>
#include "boxes.h"
 
#define N 10005
#define ll long long
#define ff first
#define ss second
 
using namespace std;

ll p[N], s[N];

ll delivery(int n, int k1, int l1, int a[]) {
	sort(a,a+n);
	ll x = l1, k = k1;
	for(int i = 0; i < n; i++){
		p[i+1] = a[i] + p[max(i-k+1,0ll)];
	}
	for(int i = n-1; i >= 0; i--){
		s[i+1] = (x-a[i]) + s[min(i+k+1,(ll)(n+1))];
	}
	ll ans = LLONG_MAX;
	int ind = x/2;
	vector <pair<ll,ll>> v;
	for(int i = 0; i <= n; i++){
		ans = min(ans,2*(p[i] + s[i+1]));
		v.push_back({abs(ind-a[i]),i+1});
	}
	sort(v.begin(), v.end());
	ll l = n+1, r = 0;
	for(auto i : v){
		l = min(l,i.ss-1);
		r = max(r,i.ss+1);
		ans = min(ans,2*(p[l] + s[r]) + ((r-l-2+k)/k)*x);
	}
	return ans;
}

Compilation message (stderr)

boxes.cpp: In function 'long long int delivery(int, int, int, int*)':
boxes.cpp:23:13: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   23 |  int ind = x/2;
      |            ~^~
#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...