結果
問題 |
No.2693 Sword
|
ユーザー |
|
提出日時 | 2024-03-26 22:00:36 |
言語 | C++17(clang) (17.0.6 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 871 bytes |
コンパイル時間 | 2,241 ms |
コンパイル使用メモリ | 165,872 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-09-30 14:26:31 |
合計ジャッジ時間 | 2,801 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 WA * 1 |
other | AC * 21 WA * 8 |
ソースコード
#include <bits/stdc++.h> using namespace std; using i64 = long long; #define yn(pope) (pope ? "Yes" : "No") #define rep(i, n, m) for (int i = (n); i < (m); i++) #define rrep(i, n, m) for (int i = (n); i > m; i--) #define IINF (1 << 30) #define INF (1ll << 60) #define all(v) v.begin(), v.end() int main() { int N, K; i64 P; cin >> N >> P >> K; vector dp(K + 1, 0ll); dp[0] = P; rep(_, 0, N) { int t; i64 b; cin >> t >> b; vector cp = dp; if (t == 1) { rep(i, 0, K) { cp[i + 1] = max(dp[i + 1], dp[i] + b); } } if (t == 2) { rep(i, 0, K) { cp[i + 1] = max(dp[i + 1], dp[i] << 1); } } dp = cp; rep(i, 0, K + 1) { if (dp[i] >= 1000000000000000000ll) { dp[i] = 1000000000000000000ll; } } } cout << (dp[K] > 1000000000000000000ll ? -1 : dp[K]) << endl; return 0; }