結果
問題 | No.2099 [Cherry Alpha B] Time Machine |
ユーザー |
|
提出日時 | 2022-10-14 22:34:15 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,179 bytes |
コンパイル時間 | 3,148 ms |
コンパイル使用メモリ | 158,056 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-26 15:59:45 |
合計ジャッジ時間 | 14,493 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 44 WA * 28 |
ソースコード
#if !__INCLUDE_LEVEL__ #include __FILE__ signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll T, X, A, Y, B; cin >> T >> X >> A >> Y >> B; if (T > 0) { if (X >= A) { cout << T << "\n"; return 0; } ll TT = T % A; ll ans = T / A * X; cerr << ans << "\n"; ll add_cost = TT; REP(i, 1e7) { if (i == 0) continue; ll cost = X * i; if ((A * i - TT) % B == 0) { cost += Y * (A * i - TT) / B; } else { cost += Y * ((A * i - TT) / B + 1) + ((A * i - TT) % B); } add_cost = min(add_cost, cost); } cout << ans + add_cost << "\n"; } else { if (T % B == 0) { cout << T / B * Y << "\n"; return 0; } T *= -1; ll TT = (T / B + 1) * B - T; ll ans = (T / B + 1) * Y; cerr << ans << "\n"; ll add_cost = TT; REP(i, 1e7) { if (i == 0) continue; if (TT + B * i < A) continue; ll cost = Y * i; if ((B * i + TT) % A == 0) { cost += X * (B * i + TT) / A; } else { cost += X * (B * i + TT) / A + ((B * i + TT) % A); } add_cost = min(add_cost, cost); } cout << ans + add_cost << "\n"; } return 0; } //====================temp==================== #else #include <bits/stdc++.h> using namespace std; #define REP(i, n) for (int i = 0; i < (int)(n); i++) #define RREP(i, n) for (int i = ((int)(n)-1); i >= 0; i--) #define REPITR(itr, ARRAY) \ for (auto itr = (ARRAY).begin(); itr != (ARRAY).end(); ++itr) #define RREPITR(itr, ARRAY) \ for (auto itr = (ARRAY).rbegin(); itr != (ARRAY).rend(); ++itr) #define ALL(n) (n).begin(), (n).end() using ll = long long; using ull = unsigned long long; //#define int long long template<typename T> struct edge { int to; T cost; edge() {} edge(int to, T cost): to(to), cost(cost) {} }; #endif