Submission #996349

#TimeUsernameProblemLanguageResultExecution timeMemory
996349AlfraganusBoxes with souvenirs (IOI15_boxes)C++17
20 / 100
7 ms452 KiB
#include <bits/stdc++.h>
#include "boxes.h"
using namespace std;

#define ll long long

ll delivery(int n, int k, int l, int p[]) {
    ll ans = 1e18;
    auto get = [&](ll x){return min(x, l - x);};
    vector<int> q;
    for(int i = 0; i < n; i ++)
        if(p[i] != 0)
            q.push_back(p[i]);
    n = (int)q.size();
    for(int i = 0; i <= n; i ++){
        deque<int> dq;
        for(int j = 0; j < i; j ++)
            dq.push_back(q[j]);
        // for(auto x : dq)
        //     cout << x << ' ';
        // cout << endl;
        ll mx = 0;
        while(dq.size() > 0){
            int sz = (int)dq.size();
            ll clock = dq[min(sz - 1, k - 1)] + get(dq[min(sz - 1, k - 1)]);
            mx += clock;
            for(int j = 0; j < min(sz, k); j ++)
                dq.pop_front();
        }
        for(int j = i; j < n; j ++)
            dq.push_back(q[j]);
        // for(auto x : dq)
        //     cout << x << ' ';
        // cout << endl;
        while(dq.size() > 0){
            int sz = (int)dq.size();
            ll counterclock = l - dq[max(0, sz - k)] + get(dq[max(0, sz - k)]);
            mx += counterclock;
            for(int j = 0; j < min(sz, k); j ++)
                dq.pop_back();
        }
        // cout << i << ' ' << mx << endl;
        ans = min(ans, mx);
    }
    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...