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...