Submission #1231098

#TimeUsernameProblemLanguageResultExecution timeMemory
1231098banganNile (IOI24_nile)C++20
17 / 100
2094 ms4072 KiB
#include "nile.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long

std::vector<long long> calculate_costs(std::vector<int> W, std::vector<int> A, std::vector<int> B, std::vector<int> E) {
    int N = W.size();
    int Q = E.size();
    vector<int> ord(N);
    iota(ord.begin(), ord.end(), 0);
    sort(ord.begin(), ord.end(), [&](int i, int j) {
        return W[i]<W[j];
    });
    vector<ll> ret;
    for (int d : E) {
        ll add = 0;
        for (int i=0; i<N;) {
            int j = i+1;
            while (j<N && W[ord[j]] - W[ord[j-1]] <= d) j++;
            ll sum = 0;
            for (int k=i; k<j; k++) sum += B[ord[k]];
            ll ans = LLONG_MAX;
            if ((j-i) % 2 == 0) ans = sum;
            else for (int k=i; k<j; k+=2) ans = min(ans, sum - B[ord[k]] + A[ord[k]]);
            i=j;
            add += ans;
        }
        ret.push_back(add);
    }
    return ret;
}
#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...