Submission #1290057

#TimeUsernameProblemLanguageResultExecution timeMemory
1290057vpinxNile (IOI24_nile)C++20
17 / 100
2095 ms6932 KiB
#include "nile.h"
#include <bits/stdc++.h>
using namespace std;

vector<long long> calculate_costs(vector<int> w, vector<int> a, vector<int> b, vector<int> e) {
    long long n = w.size(), mx = 0;
    vector<pair<int, int>> v(n);
    for (int i = 0; i < n; i++) {
        v[i] = {w[i], a[i] - b[i]};
        mx += a[i];
    }
    sort(v.begin(), v.end());
    
    auto op = [&](vector<pair<int, int>> &c, int sm) {
        int sum = 0;
        for (int i = 0; i < c.size(); i++) sum += c[i].second;
        if ((int)c.size() % 2 == 0) return sum;
        
        int ans = 0;
        for (int i = 0; i < c.size(); i++) ans = max(ans, sum - c[i].second);
        return ans;
    };
    
    int q = e.size();
    vector<long long> ans(q);
    for (int t = 0; t < q; t++) {
        int val = 0;
        vector<pair<int, int>> cur = {v[0]};
        for (int i = 1; i < n; i++) {
            if (v[i].first - v[i - 1].first > e[t]) {
                val += op(cur, e[t]); 
                cur.clear();
            }
            cur.push_back(v[i]);
        }
        ans[t] = mx - val - op(cur, e[t]);
    }
    return ans;
}
#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...