This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll s1[10000010], s2[10000010];
long long delivery(int N, int K, int L, int p[]) {
int i, j;
K=min(N,K);
for (i=0; i<K; i++) { for (j=i; j<N; j+=K) { if(p[j]<=L/2) s1[i]+=2*(ll)p[j]; else s1[i]+=L; } }
for (i=N-1; i>=N-K; i--) { for (j=i; j>=0; j-=K) { if (p[j]<=L/2) s2[i%K]+=L; else s2[i%K]+=2*(ll)(L-p[j]); } }
ll ans=(1ll<<62), s;
for (i=0; i<K; i++) {
s=s2[(i+1)%K]+(p[i]<=L/2?p[i]*2:L);
ans=min(s, ans);
for (j=i+K; i<N; i+=K) {
s+=(ll)(p[j]<=L/2?p[j]*2:L);
s-=(ll)(p[j-K+1]<=L/2?L:(L-p[j-K+1])*2);
ans=min(s,ans);
}
}
for (i=N-1; i>=N-K; i--) {
s=s1[(i+K-1)%K]+(p[i]<=L/2?L:2*(L-p[i]));
ans=min(s, ans);
for (j=i-K; j>=0; j-=K) {
s+=(ll)(p[j]<=L/2?L:2*(L-p[j]));
s-=(ll)(p[j+K-1]<=L/2?p[j+K-1]*2:L);
ans=min(s,ans);
}
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |