Submission #793546

#TimeUsernameProblemLanguageResultExecution timeMemory
793546UltraFalconBoxes with souvenirs (IOI15_boxes)C++17
0 / 100
1 ms340 KiB
// pragmas
#ifndef DEBUG

#endif

#include <bits/stdc++.h>
#include "boxes.h"

// #define int long long
using ll = long long;

using namespace std;

long long delivery(int N, int K, int L, int p[]) {
    
    set<int> used;
    // map<int, vector<int>> locs;
    map<int, int> loc_cnt;
    for (int i=0; i<N; i++) {
        // locs[p[i]].push_back(i);
        loc_cnt[p[i]]++;
        used.insert(p[i]);
    }

    int res = 0;
    int last = 0;
    int cur = 0;
    int i;
    for (auto idx : used) {
        i = idx;
        while (loc_cnt[i] > 0) {
            if (last==-1) last=i;
            if (cur + loc_cnt[i] >= K) {
                // cerr << min(i, N-i) << "-\n";
                loc_cnt[i] -= K-cur;
                res += i-last + min(i, L-i) + min(last, L-last);
                last = -1;
                cur = 0;
            } else {
                cur += loc_cnt[i];
                loc_cnt[i] = 0;
            }
        }
        // cerr << res << "\n";
    }
    if (cur > 0) {
        // cerr << i-last << "-\n";
        res += i-last + min(i, L-i) + min(last, L-last);
        last = i;
        cur = 0;
    }

    return res;
}
#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...