88062024-01-31 10:02:58Error42Rendőrségi Üldözés 4cpp17Hibás válasz 25/100492ms5404 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 = 1; j <= r; 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
1Elfogadva3ms1828 KiB
2Elfogadva3ms2028 KiB
subtask210/10
3Elfogadva3ms2232 KiB
4Elfogadva3ms2448 KiB
5Elfogadva3ms2668 KiB
6Elfogadva3ms2880 KiB
7Elfogadva3ms3116 KiB
subtask315/15
8Elfogadva3ms3192 KiB
9Elfogadva3ms3412 KiB
10Elfogadva3ms3420 KiB
11Elfogadva3ms3552 KiB
subtask40/15
12Hibás válasz3ms3652 KiB
13Elfogadva3ms3632 KiB
14Hibás válasz3ms3624 KiB
15Hibás válasz3ms4012 KiB
subtask50/25
16Hibás válasz3ms4008 KiB
17Hibás válasz3ms3996 KiB
18Hibás válasz3ms4096 KiB
19Hibás válasz3ms3912 KiB
20Hibás válasz3ms4024 KiB
subtask60/15
21Hibás válasz3ms4068 KiB
22Hibás válasz3ms4320 KiB
23Hibás válasz3ms4476 KiB
24Hibás válasz3ms4460 KiB
25Hibás válasz3ms4424 KiB
subtask70/20
26Hibás válasz8ms4628 KiB
27Hibás válasz20ms4888 KiB
28Hibás válasz54ms5104 KiB
29Hibás válasz166ms5300 KiB
30Hibás válasz492ms5404 KiB