제출 #1368520

#제출 시각아이디문제언어결과실행 시간메모리
1368520backer8002Tycho (BOI23_tycho)C++20
32 / 100
2093 ms327680 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    long B,P,D,N;
    cin >> B >> P >> D >> N;

    vector<long> places(N+2);
    places[0] = 0, places.back() = B;
    for (int i = 0; i < N; i++)
        cin >> places[i+1];
    vector values(N+1,vector<long>(P));

    for (int i = 0; i < N+1; i++) {
        const long dist = places[i+1] - places[i];
        for (int j = 0; j < P; j++) {
            const long timeBefore = (P + j - dist % P) % P;
            long value = LONG_MAX;
            if (i != 0) {
                for (int h = 0; h < P; h++)
                    value = min(value, values[i-1][h] + (h > timeBefore ? P - h + timeBefore : timeBefore - h));
            } else
                value = timeBefore;
            values[i][j] = (dist + timeBefore - 1)/P * D + dist + value;
        }
    }
    long minimum = LONG_MAX;
    for (int i = 0; i < P; i++)
        minimum = min(minimum,values.back()[i]);
    cout << minimum;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…