88072024-01-31 10:04:19Error42Rendőrségi Üldözés 4cpp17Elfogadva 100/100463ms4684 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

using ll = long long;

ll first_green(ll const cur_t, ll const t) {
    ll cycle = cur_t % (2 * t);

    if (cycle < t)
        return cur_t;
    else
        return cur_t / (2 * t) * (2 * t) + 2 * t;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n, r, t, l;
    cin >> n >> r >> t >> l;

    vector<ll> x(n);
    for (ll& y : x)
        cin >> y;

    vector<ll> dp(r + 1);

    for (int i = 0; i <= r; i++)
        dp[i] = x[0];

    for (int i = 0; i < n; i++) {
        // get through lamp
        for (int j = r; j >= 1; j--) {
            dp[j] = min(first_green(dp[j], t), dp[j - 1]);
        }
        dp[0] = first_green(dp[0], t);

        // to next lamp
        if (i != n - 1) {
            for (int j = 0; j <= r; j++)
                dp[j] += x[i + 1] - x[i];
        }
    }

    cout << dp[r] + l - x.back() << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1700 KiB
2Elfogadva3ms1864 KiB
subtask210/10
3Elfogadva3ms2096 KiB
4Elfogadva3ms2268 KiB
5Elfogadva2ms2348 KiB
6Elfogadva2ms2356 KiB
7Elfogadva3ms2572 KiB
subtask315/15
8Elfogadva3ms2788 KiB
9Elfogadva3ms2900 KiB
10Elfogadva2ms2992 KiB
11Elfogadva3ms3104 KiB
subtask415/15
12Elfogadva3ms3112 KiB
13Elfogadva3ms3312 KiB
14Elfogadva3ms3448 KiB
15Elfogadva3ms3656 KiB
subtask525/25
16Elfogadva2ms3580 KiB
17Elfogadva2ms3584 KiB
18Elfogadva3ms3576 KiB
19Elfogadva3ms3584 KiB
20Elfogadva3ms3888 KiB
subtask615/15
21Elfogadva3ms3756 KiB
22Elfogadva3ms3648 KiB
23Elfogadva3ms3640 KiB
24Elfogadva3ms3908 KiB
25Elfogadva3ms3916 KiB
subtask720/20
26Elfogadva8ms4072 KiB
27Elfogadva18ms4092 KiB
28Elfogadva50ms4356 KiB
29Elfogadva156ms4640 KiB
30Elfogadva463ms4684 KiB