제출 #1187309

#제출 시각아이디문제언어결과실행 시간메모리
1187309nikd나일강 (IOI24_nile)C++20
67 / 100
2093 ms6456 KiB
#include <bits/stdc++.h>
using ll = long long;
using namespace std;

struct el{
    ll w, a, b;
};

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();
    vector<el> v(n);
    for(int i = 0; i<n; i++) v[i] = el{W[i], A[i], B[i]};
    sort(v.begin(), v.end(), [](el a, el b){return a.w<b.w;});
    vector<ll> sol(E.size(), 0);
    for(int j = 0; j<E.size(); j++){
        int d = E[j];
        int curr_l = 0;
        ll curr_mn = LLONG_MAX;
        ll sm = 0;
        for(int i= 0; i<n; i++){
            curr_l++;
            if(curr_l&1 || (i<n-1 && v[i+1].w-v[i-1].w <= d)) curr_mn = min(curr_mn, v[i].a-v[i].b);
            sm += v[i].b;
            if(i == n-1 || v[i+1].w-v[i].w > d){
                if(curr_l&1) sol[j] += sm+curr_mn;
                else sol[j] += sm;
                sm = 0;
                curr_l = 0;
                curr_mn = LLONG_MAX;
            }
        }
    }
    return sol;
}
#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...