Submission #765872

#TimeUsernameProblemLanguageResultExecution timeMemory
765872raysh07Boxes with souvenirs (IOI15_boxes)C++17
20 / 100
1 ms312 KiB
#include "boxes.h"
#include <bits/stdc++.h>
using namespace std;
 
long long delivery(int N, int K, int L, int a[]) {
    long long ans = 0;
    int n = N;
    int k = K;
    int l = 0, r = n - 1;
    
    while((r - l + 1) >= k){
        int mx = 0;
        for (int i = l; i < l + k; i++) mx = max(mx, a[i]);
        
        if (mx > (L - 1) / 2) break;
        ans += 2 * mx;
        l += k;
    }
    
    while ((r - l + 1) >= k){
        int mn = 1e9;
        for (int i = r; i > r - k; i--) mn = min(mn, a[i]);
        
        if (mn <= (L - 1) / 2) break;
        ans += 2 * (L - mn);
        r -= k;
    }
    
    long long old = ans;
    
    if ((r - l + 1) <= k) ans += L;
    else ans += 2 * L;
    
    int mx = 0;
    for (int i = l; i <= r; i++){
        if (a[i] > (L - 1) / 2) break;
        mx = max(mx, a[i]);
    }
    
    int mn = L;
    
    for (int i = r; i >= l; i--){
        if (a[i] <= (L - 1) / 2) break;
        mn = min(mn, a[i]);
    }
    
    ans = min(ans, old + 2 * mx + 2 * (L - mn));
    
    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...