Submission #1245430

#TimeUsernameProblemLanguageResultExecution timeMemory
1245430nibertNile (IOI24_nile)C++20
19 / 100
18 ms3400 KiB
#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 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...