Submission #1218451

#TimeUsernameProblemLanguageResultExecution timeMemory
1218451vaneaOvertaking (IOI23_overtaking)C++20
39 / 100
3593 ms576 KiB
#include <bits/stdc++.h>
#include "overtaking.h"
using namespace std;
using ll = long long;

const int mxN = 1e3+10;
int l, n;vector<ll> t; vector<int> w; int x; int m; vector<int> s;

void init(int L, int N, vector<ll> T, vector<int> W, int X, int M, vector<int> S) {
    l = L; n = N; t = T; w = W; x = X; m = M; s = S;
}

ll calculate_arrival_time(ll Y) {
    set<array<ll, 3>> buses;
    for(int i = 0; i < n; i++) {
        buses.insert({t[i], w[i], i});
    }
    buses.insert({Y, x, n});
    for(int i = 1; i < m; i++) {
        set<array<ll, 3>> nxt;
        for(auto [t, w, idx] : buses) {
            ll f = t + w * (s[i] - s[i-1]);
            ll s;
            if(nxt.empty()) s = 0;
            else {
                auto it = prev(nxt.end());
                s = (*it)[0];
            }
            ll now = max(f, s);
            nxt.insert({now, w, idx});
            if(i == m-1 && idx == n) return now;
        }
        swap(buses, nxt);
    }
}

ll arrival_time(ll Y) {
    return calculate_arrival_time(Y);
}
/*
int main()
{
    init(6, 4, {20, 10, 40, 0}, {5, 20, 20, 30}, 10, 4, {0, 1, 3, 6});
    cout << arrival_time(50);
}*/

Compilation message (stderr)

overtaking.cpp: In function 'll calculate_arrival_time(ll)':
overtaking.cpp:35:1: warning: control reaches end of non-void function [-Wreturn-type]
   35 | }
      | ^
#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...