結果
問題 |
No.2099 [Cherry Alpha B] Time Machine
|
ユーザー |
![]() |
提出日時 | 2022-10-14 21:58:11 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 916 bytes |
コンパイル時間 | 1,931 ms |
コンパイル使用メモリ | 176,228 KB |
実行使用メモリ | 168,648 KB |
最終ジャッジ日時 | 2024-06-26 13:54:55 |
合計ジャッジ時間 | 13,457 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 7 TLE * 2 -- * 63 |
ソースコード
#include <bits/stdc++.h> using namespace std; const int MX = 10000000; const long long INF = 1000000000000000000; int main(){ int T; cin >> T; int X, A; cin >> X >> A; int Y, B; cin >> Y >> B; vector<long long> d(MX * 2 + 1, -1); priority_queue<pair<long long, int>, vector<pair<long long, int>>, greater<tuple<long long, int>>> pq; pq.push(make_pair(0, MX)); while (!pq.empty()){ long long c = pq.top().first; int v = pq.top().second; pq.pop(); if (d[v] == -1){ d[v] = c; if (v + A <= MX * 2){ if (d[v + A] == -1){ pq.push(make_pair(c + X, v + A)); } } if (v - B >= 0){ if (d[v - B] == -1){ pq.push(make_pair(c + Y, v - B)); } } } } long long ans = INF; for (int i = 0; i <= MX + T; i++){ if (d[i] != -1){ ans = min(ans, d[i] + (MX + T - i)); } } cout << ans << endl; }