#include <vector>
#include <algorithm>
using namespace std;
vector<long long> calculate_costs( vector<int> W, vector<int> A, vector<int> B, vector<int> E){
long long n = A.size();
long long q = E.size();
long long base_cost = 0;
long long min_cost = 1e9;
vector <long long> costs(q);
vector <long long> extra(n);
bool subtask1 = true;
for (int i = 0; i < n; i++){
if (W[i] != W[0]){
subtask1 = false;
break;
}
}
if (subtask1){
for (int i = 0; i < n; i++){
extra[i] = (long long)A[i] - B[i];
base_cost += (long long)B[i];
}
for (int i = 0; i < n; i++){
min_cost = min(min_cost, extra[i]);
}
for (int i = 0; i < q; i++){
if (n%2 == 0){
costs[i] = base_cost;
} else{
costs[i] = base_cost + min_cost;
}
}
return costs;
} else{
for (int i = 0; i < n; i++){
extra[i] = (long long)A[i] - B[i];
base_cost += (long long)B[i];
}
long long min_odd_cost = 1e9;
for (int i = 0; i < n; i++){
min_cost = min(min_cost, extra[i]);
if (i%2 == 0){
min_odd_cost = min(min_odd_cost, extra[i]);
}
}
for (int i = 0; i < q; i++){
int D = E[i];
if (n%2 == 0){
costs[i] = base_cost;
} else {
if(D == 1){
costs[i] = base_cost + min_odd_cost;
} else {
costs[i] = base_cost + min_cost;
}
}
}
return costs;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |