제출 #1015669

#제출 시각아이디문제언어결과실행 시간메모리
1015669Muhammet선물상자 (IOI15_boxes)C++17
35 / 100
1 ms360 KiB
#include <bits/stdc++.h>
#include "boxes.h"
 
#define N 10000005
#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, ind = ((x+1)/2);
	vector <pair<ll,ll>> v;
	for(int i = 0; i <= n; i++){
		ans = min(ans,2*(p[i] + s[i+1]));
	}
	for(int i = 0; i < n; i++){
		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);
		ll z = (p[l] + s[r]);
		z *= 2ll;
		z += (((r-l-2+k)/k)*x*1ll);
		ans = min(ans,z);
	}
	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...