제출 #1348360

#제출 시각아이디문제언어결과실행 시간메모리
1348360ahmetlbktd4나일강 (IOI24_nile)C++20
67 / 100
2094 ms10212 KiB
#include "bits/stdc++.h"
#include "nile.h"
#define ll long long
#define ff first
#define ss second
using namespace std;

const ll inf = 2e18; 

vector <ll> calculate_costs(vector <int> w,vector <int> a,vector <int> b,vector <int> e){
    int n = w.size();
    int q = e.size();
    vector <pair<int,pair<int,int>>> v(n);
    for (int i = 0;i < n;i++){
        v[i] = {w[i],{a[i],b[i]}};
    }
    v.push_back({(int)-1e9,{1e9,1e9}});
    sort(v.begin(),v.end());
    vector <ll> r;
    for (int k = 0;k < q;k++){
        vector <vector <ll>> dp(n+1,vector <ll> (3,inf));
        dp[0][0] = 0;
        int d = e[k]; 
        for (int i = 1;i <= n;i++){
            dp[i][0] = min({dp[i-1][1],dp[i-1][0],dp[i-1][2]})+v[i].ss.ff;
            if (i > 1 && v[i].ff - v[i-1].ff <= d)
            dp[i][1] = min(dp[i-2][0],min(dp[i-2][1],dp[i-2][2])) + v[i-1].ss.ss + v[i].ss.ss;
            if (i > 2 && v[i].ff - v[i-2].ff <= d)
            dp[i][2] = min(dp[i-3][0],min(dp[i-3][1],dp[i-3][2])) + v[i-2].ss.ss+v[i-1].ss.ff+v[i].ss.ss;
        }
        r.push_back((ll)min(dp[n][0],min(dp[n][1],dp[n][2])));
    }
    return r;
}
#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...