結果
問題 |
No.3068 Speedrun (Hard)
|
ユーザー |
![]() |
提出日時 | 2025-03-21 22:47:42 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 1,919 bytes |
コンパイル時間 | 2,022 ms |
コンパイル使用メモリ | 202,060 KB |
実行使用メモリ | 814,304 KB |
最終ジャッジ日時 | 2025-03-21 22:47:47 |
合計ジャッジ時間 | 4,194 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 MLE * 1 |
other | -- * 32 |
ソースコード
#include <bits/stdc++.h> using namespace std; using Int = long long; template <class T> inline bool setmin(T &A, T B){ if (A > B){ A = B; return true; } else { return false; } } template <class T> inline bool setmax(T &A, T B){ if (A < B){ A = B; return true; } else { return false; } } #define REP(x, y) for (int x = 0; x < int(y); ++x) #define rep(x, y, z) for (int x = int(y); x < int(z); ++x) #define PER(x, y) for (int x = int(y) - 1; x >= 0; --x) #define per(x, y, z) for (int x = int(z) - 1; x >= int(y); --x) short f[200200200], s[200200200]; short ff[200200200], ss[200200200]; void solve(){ int A, B, C, D, N; cin >> A >> B >> C >> D >> N; int P, Q, R, S, T; cin >> P >> Q >> R >> S >> T; vector<tuple<int, int, int, int>> X; X.reserve((A + B + 1) * (A + 1)); REP(i, min(N + 1, A + B + 1)){ REP(j, min(i + 1, A + 1)){ if (i - j <= B){ X.push_back({i, P * j + Q * (i - j), j, i - j}); } } } vector<tuple<int, int, int, int>> Y; Y.reserve((C + D + 1) * (C + 1)); PER(i, min(N + 1, C + D + 1)){ REP(j, min(i + 1, C + 1)){ if (i - j <= D){ Y.push_back({i, R * j + S * (i - j), j, i - j}); } } } int l = 0; vector<int> q; q.reserve(Y.size()); int j = 0; REP(i, X.size()){ if (i == 0 || get<0>(X[i]) != get<0>(X[i - 1])){ while (l < int(q.size())){ ff[q[l]] = 0; ss[q[l]] = 0; ++l; } while (j < int(Y.size()) && N - get<0>(X[i]) <= get<0>(Y[j])){ if (N - get<0>(X[i]) == get<0>(Y[j])){ ff[get<1>(Y[j])] = get<2>(Y[j]) + 1; ss[get<1>(Y[j])] = get<3>(Y[j]) + 1; q.push_back(get<1>(Y[j])); } ++j; } } if (ff[T - get<1>(X[i])] > 0){ cout << get<2>(X[i]) << ' ' << get<3>(X[i]) << ' ' << ff[T - get<1>(X[i])] - 1 << ' ' << ss[T - get<1>(X[i])] - 1 << '\n'; return; } } } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int t = 1; // cin >> t; while (t--){ solve(); } }