Submission #1364122

#TimeUsernameProblemLanguageResultExecution timeMemory
1364122avighna추월 (IOI23_overtaking)C++20
39 / 100
3595 ms31940 KiB
#include <bits/stdc++.h>

using namespace std;

namespace {
using i64 = long long;

int N, M, X;
vector<vector<i64>> _t, _e;
vector<int> W, S;
} // namespace

void init(int L, int N, vector<i64> T, vector<int> W, int X, int M, vector<int> S) {
  ::N = N, ::M = M, ::X = X, ::W = W, ::S = S;
  ::W.push_back(X);
  _t = vector(N + 1, vector<i64>(M));
  _e = vector(N + 1, vector<i64>(M));
  for (int i = 0; i < N; ++i) {
    _t[i][0] = T[i];
  }
  return;
}

i64 arrival_time(i64 Y) {
  auto t = _t, e = _e;
  t[N][0] = Y;
  for (int j = 1; j < M; ++j) {
    for (int i = 0; i <= N; ++i) {
      t[i][j] = e[i][j] = t[i][j - 1] + i64(W[i]) * (S[j] - S[j - 1]);
    }
    for (int i = 0; i <= N; ++i) {
      for (int k = 0; k <= N; ++k) {
        if (t[k][j - 1] < t[i][j - 1]) {
          t[i][j] = max(t[i][j], e[k][j]);
        }
      }
    }
  }
  return t[N][M - 1];
}
#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...