제출 #1198710

#제출 시각아이디문제언어결과실행 시간메모리
1198710Gr1sen선물상자 (IOI15_boxes)C++20
0 / 100
2 ms324 KiB
#include "boxes.h"
#include<algorithm>
#include<iomanip>
#include<vector>
#include<set>
#include<iterator>
#include<iostream>

using namespace std;

#define ll long long
#define vi vector<ll>
#define vvi vector<vi>
#define ms multiset<int>

int n, k, l;
vi P;

ll delivery(int in, int ik, int il, int L[]) {
    n = in; k = ik; l = il;
    int p = 0;
    P = vi(n);
    while (L[p] <= l/2) {
        if (p < k) {
            P[p] = L[p]*2;
            p++;
            continue;
        }
        P[p] = (L[p])*2 + P[p-k];
        p++;
    }
    p = n-1;
    while (L[p] > l/2) {
        if (p > n-k-1) {
            P[p] = (l-L[p])*2;
            p--;
            continue;
        }
        P[p] = (l - L[p])*2 + P[p+k];
        p--;
    }
    p++;
    cerr << "P : {";
    for (auto i : P) cerr << i << ", ";
    cerr << "}\n";
    if (p == 0) return P[p];
    ll ans = P[p] + P[p-1];
    for (int i = p-k-1; i < p; i++) {
        if (i < 0) continue;
        if (i+2+k >= P.size()) break;
        ans = min(ans, P[i] + P[i+k+2] + 2*l);
    }
    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...