제출 #1246477

#제출 시각아이디문제언어결과실행 시간메모리
1246477alexaaa나일강 (IOI24_nile)C++20
36 / 100
2092 ms5296 KiB
#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 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...