Submission #1367582

#TimeUsernameProblemLanguageResultExecution timeMemory
1367582psigurdNile (IOI24_nile)C++20
0 / 100
2094 ms13772 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long;

ll oink(vector<vector<int>> v, int d, int left, int right){
    // int m = prices.size();
    // if (m == 0){
    //     return 0;
    // }
    ll cost = 0;
    ll MIN = 1000000000000000000;
    for (int i = left; i <= right; i++){
        cost += v[i][1];
        if (((i - left) % 2 == 0) || (i > left && i + 1 <= right && abs(v[i - 1][0] - v[i + 1][0]) <= d)){
            ll diff = v[i][2] - v[i][1];
            MIN = min(MIN, diff);
        }
    }
    return cost + MIN;
}

vector<ll> calculate_costs(vector<int> w, vector<int> a, vector<int> b, vector<int> e){
    int n = w.size();
    vector<ll> ans;
    vector<vector<int>> v;
    for (int i = 0; i < n; i++){
        v.push_back({w[i], b[i], a[i]});
    }
    sort(v.begin(), v.end());
    for (auto &d : e){
        // vector<pair<int, int>> prices;
        int left = 0; int right = 0;
        ll c = 0;
        for (int i = 0; i < n; i++){
            if (i == 0){
                // prices.push_back({v[i][1], v[i][2]});
                left = 0;
                continue;
            }
            if (abs(v[i][0] - v[i - 1][0]) <= d){
                // prices.push_back({v[i][1], v[i][2]});
                right++;
                continue;
            }
            c += oink(v, d, left, right);
            left = i; right = i;
            // prices.clear();
        }
        c += oink(v, d, left, right);
        ans.push_back(c);
    }
    return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...