Submission #1362654

#TimeUsernameProblemLanguageResultExecution timeMemory
1362654hccoderTrain (APIO24_train)C++20
0 / 100
55 ms15980 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

long long solve(int N, int M, int W, std::vector<int> T,
    std::vector<int> X, std::vector<int> Y,
    std::vector<int> A, std::vector<int> B, std::vector<int> C,
    std::vector<int> L, std::vector<int> R){
    vector<unordered_map<int, long long>> dp(N);
    vector<vector<int>> in(N), out(N);
    for (int i = 0; i<M; i++) {
        in[Y[i]].push_back(i);
        out[X[i]].push_back(i);
    }
    for (int i = 0; i<N; i++){
        for (int e: in[i]) dp[i][B[e]] = 1e18;
    }
    dp[0][0] = 0;
    set<pair<int, int>> st = {{0, 0}};
    for (int i = 0; i<N; i++){
        for (int e: in[i]) st.insert({B[e], e});
    }
    for (auto [t, cur]: st){
        for (int e: out[cur]){
            if (A[e]>=t){
                dp[Y[e]][B[e]] = min(dp[Y[e]][B[e]], dp[cur][t]+C[e]);
            }
        }
    }
    long long res = 1e18;
    for (auto e: dp[N-1]) res = min(res, e.second);
    if (res==1e18) res = -1;
    return res;
}


// int main() {
//     cout<<solve(3, 3, 1, {20, 30, 40}, {0, 1, 0}, {1, 2, 2},
//  {1, 20, 18}, {15, 30, 40}, {10, 5, 40}, {16}, {19});
	
// }
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...