Submission #1246452

#TimeUsernameProblemLanguageResultExecution timeMemory
1246452alexaaaNile (IOI24_nile)C++20
0 / 100
30 ms5040 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> s_A; vector<int> s_B; 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]); s_A.push_back(A[i]); s_B.push_back(B[i]); } sort(s_w.begin(),s_w.end()); sort(s_A.begin(),s_A.end(),[&](int i,int j){ if(W[i] == W[j]){ return i < j; } else{ return W[i] < W[j]; } }); sort(s_B.begin(),s_B.end(),[&](int i,int j){ if(W[i] == W[j]){ return i < j; } else{ return W[i] < W[j]; } }); 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){ vector<int> alone; for(int p = 0; p < W.size(); p++){ if(abs(s_w[p] - s_w[p+1])<= D){ cost+=B[p]; } else{ alone.push_back(p); } } 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...