#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
#include "nile.h"
using namespace std;
std::vector<long long> calculate_costs(
std::vector<int> W, std::vector<int> A,
std::vector<int> B, std::vector<int> E){
vector<long long> answer;
vector<int> extra_cost;
vector<int> s_w;
vector<int> ec_i(W.size());
bool one_d_c = false;
iota(ec_i.begin(),ec_i.end(),0);
for(int i = 0; i < W.size(); i++){
extra_cost.push_back(A[i]-B[i]);
if(A[i]-B[i] == 1){
one_d_c = true;
}
else{
one_d_c = false;
}
s_w.push_back(W[i]);
}
sort(s_w.begin(),s_w.end());
sort(ec_i.begin(),ec_i.end(),[&](int i, int j){
if(extra_cost[i] == extra_cost[j]){
return i<j;
}
else{
return extra_cost[i] < extra_cost[j];
}
});
for(int i = 0; i < E.size(); i++){
int D = E[i];
long long cost = 0;
if(one_d_c&& W[0] != 1 && W[1] != 1){
vector<int> alone;
int u = 0;
while(true){
if(u > W.size()|| u == W.size()-1){
if(u == W.size()-1){
alone.push_back(u);
}
break;
}
if(abs(s_w[u] - s_w[u+1])<= D){
cost+=B[u];
cost+=B[u+1];
u+=2;
}
else{
alone.push_back(u);
u++;
}
}
for(int h = 0; h < alone.size(); h++){
cost += A[alone[h]];
}
answer.push_back(cost);
}
else{
if(W.size()%2 == 0){
for(int j = 0;j < W.size(); j++){
cost+=B[j];
}
answer.push_back(cost);
}
else{
int skip;
if(W[0] == 1 && W[1] == 1){
skip = ec_i[0];
for(int m = 0; m < W.size(); m++){
if(m == skip){
continue;
}
cost += B[m];
}
cost += A[skip];
answer.push_back(cost);
}
else if(D>= 2){
skip = ec_i[0];
for(int k = 0; k < W.size(); k++){
if(k == skip){
continue;
}
cost += B[k];
}
cost += A[skip];
answer.push_back(cost);
}
else{
for(int e = 0; e < W.size();e++){
if(ec_i[e]%2 == 0){
skip = ec_i[e];
break;
}
}
for(int l = 0; l < W.size(); l++){
if(l == skip){
continue;
}
cost += B[l];
}
cost += A[skip];
answer.push_back(cost);
}
}
}
}
return answer;
}
# | 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... |