5362 2023. 04. 26 14:14:58 horvathabel Szigetek (35 pont) cpp17 Hibás válasz 1/35 27ms 6804 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n;
    cin >> n;

    vector<int> d(n);
    for (int i = 0; i < n; i++) {
        cin >> d[i];
    }

    vector<int> distances(n);
    distances[0] = 0;
    for (int i = 1; i < n; i++) {
        distances[i] = min(i, n - i);
    }

    vector<int> optimal(n);

    optimal[0] = d[0];
    if (n > 1) {
        optimal[1] = min(d[0] + d[1], d[1]);
    }

    for (int i = 2; i < n; i++) {
        optimal[i] = min(optimal[i-1] + d[i], optimal[i-2] + min(d[i-1], d[i]));
    }

    int result = optimal[n-1];

    if (distances[n-1] == 1) {
        result = min(result, d[n-2]);
    }

    cout << result << endl;

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 1/35
1 Hibás válasz 0/0 3ms 1812 KiB
2 Hibás válasz 0/0 27ms 4448 KiB
3 Hibás válasz 0/1 2ms 2268 KiB
4 Hibás válasz 0/1 3ms 2480 KiB
5 Hibás válasz 0/1 2ms 2752 KiB
6 Elfogadva 1/1 2ms 2844 KiB
7 Hibás válasz 0/1 3ms 3080 KiB
8 Hibás válasz 0/2 3ms 3128 KiB
9 Hibás válasz 0/2 3ms 3332 KiB
10 Hibás válasz 0/2 3ms 3684 KiB
11 Hibás válasz 0/2 3ms 3652 KiB
12 Hibás válasz 0/2 4ms 3736 KiB
13 Hibás válasz 0/2 4ms 3784 KiB
14 Hibás válasz 0/2 7ms 4032 KiB
15 Hibás válasz 0/2 9ms 4232 KiB
16 Hibás válasz 0/2 14ms 4500 KiB
17 Hibás válasz 0/2 19ms 5212 KiB
18 Hibás válasz 0/2 21ms 5788 KiB
19 Hibás válasz 0/2 24ms 6000 KiB
20 Hibás válasz 0/2 24ms 6352 KiB
21 Hibás válasz 0/2 27ms 6804 KiB
22 Hibás válasz 0/2 27ms 6572 KiB