제출 #1333006

#제출 시각아이디문제언어결과실행 시간메모리
1333006kawhietBoxes with souvenirs (IOI15_boxes)C++20
10 / 100
1 ms344 KiB
#include <bits/stdc++.h>
#include "boxes.h"
using namespace std;

long long delivery(int n, int k, int len, int p[]) {
    vector<int> pos;
    for (int i = 0; i < n; i++) {
        if (p[i] > 0) {
            pos.push_back(p[i]);
        }
    }
    n = pos.size();
    deque<int> l, r;
    for (int i = 0; i < n; i++) {
        if (pos[i] <= len / 2) {
            l.push_back(pos[i]);
        } else {
            r.push_back(pos[i]);
        }
    }
    ranges::reverse(r);
    long long ans = 0;
    for (int i = k - 1; i < l.size(); i += k) {
        ans += l[i] * 2;
    }
    for (int i = k - 1; i < r.size(); i += k) {
        ans += (len - r[i]) * 2;
    }
    while (l.size() >= k) {
        for (int i = 0; i < k; i++) {
            l.pop_front();
        }
    }
    while (r.size() >= k) {
        for (int i = 0; i < k; i++) {
            r.pop_front();
        }
    }
    if (!l.empty() && !r.empty() && l.size() + r.size() <= k) {
        ans += len;
    } else {
        if (!l.empty()) ans += l.back() * 2;
        if (!r.empty()) ans += (len - r.back()) * 2;
    }
    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...