제출 #1220692

#제출 시각아이디문제언어결과실행 시간메모리
1220692cjoaNile (IOI24_nile)C++20
0 / 100
17 ms3144 KiB
#include "nile.h"

#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

vector<long long> calculate_costs(vector<int> W, vector<int> A, vector<int> B,
                                  vector<int> E) {
    // subtask 2: W[i] = i + 1

    const int N = W.size();
    if (N == 1)
        return vector<long long>(N, A[0]);

    long long base_cost = 0;
    for (int i = 0; i < N; i++)
        base_cost += B[i];

    const int Q = E.size();
    vector<long long> R(Q, base_cost);
    if (N % 2 != 0) {
        vector<int> extra_cost(N);
        for (int i = 0; i < N; ++i)
            extra_cost[i] = A[i] - B[i];
        int min_extra_cost[2] = { extra_cost[0], extra_cost[1] };
        for (int i = 2; i < N; i += 2) {
            int par = i % 2;
            min_extra_cost[par] = min(min_extra_cost[par], extra_cost[i]);
        }
        for (int j = 0; j < Q; ++j) {
            if (E[j] > 1) {
                R[j] += min(min_extra_cost[0], min_extra_cost[1]);
            }
            else {
                R[j] += min_extra_cost[0];
            }
        }
    }

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