Submission #1145561

#TimeUsernameProblemLanguageResultExecution timeMemory
1145561elojSemiexpress (JOI17_semiexpress)C++20
0 / 100
0 ms324 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>

using namespace std;

int main() {
    int N, M, K;
    cin >> N >> M >> K;

    long long A, B, C;
    cin >> A >> B >> C;

    long long T;
    cin >> T;

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

    // Calculate the maximum number of reachable stations
    long long result = 0;

    // Iterate through each segment between express stops
    for (int i = 0; i < M - 1; ++i) {
        int start = S[i];
        int end = S[i + 1];

        // Calculate the time to reach the start of the segment
        long long time_to_start = (start - 1) * B;

        // If the time to reach the start is already greater than T, skip
        if (time_to_start > T) {
            continue;
        }

        // Calculate the remaining time for this segment
        long long remaining_time = T - time_to_start;

        // Calculate the maximum number of stations reachable in this segment
        long long max_stations = min((long long)(end - start), remaining_time / C);

        // Add the number of reachable stations
        result += max_stations;

        // Update the remaining time
        remaining_time -= max_stations * C;

        // Calculate the additional stations reachable by local train
        long long additional_stations = min((long long)(end - start - max_stations), remaining_time / A);

        // Add the additional stations
        result += additional_stations;
    }

    // Output the result
    cout << result << endl;

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...