結果
問題 | No.2693 Sword |
ユーザー |
|
提出日時 | 2024-03-23 15:51:33 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 13 ms / 2,000 ms |
コード長 | 886 bytes |
コンパイル時間 | 2,832 ms |
コンパイル使用メモリ | 133,888 KB |
実行使用メモリ | 10,240 KB |
最終ジャッジ日時 | 2024-09-30 13:30:16 |
合計ジャッジ時間 | 2,544 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 29 |
ソースコード
import std.stdio: readf, writeln;import core.stdc.stdlib: exit;import core.checkedint: adds, muls;bool chk(const long x){ return x > cast(long)1e18 || x < 0; }void chmax(T, U)(ref T a, const U b) {if(a < b) {a = b;}}void main() {int n, k;long p;readf("%d %d %d\n", &n, &p, &k);auto dp = new long[][](n + 1, n + 1);dp[0][0] = p;foreach(i; 0..n) {int t, b;readf("%d %d\n", &t, &b);bool overflow;foreach(j; 0..n) {if(t == 1) {const x = adds(dp[i][j], b, overflow);if(overflow || chk(x)) {writeln(-1);exit(0);}chmax(dp[i + 1][j + 1], x);} else {const x = muls(dp[i][j], 2, overflow);if(overflow || chk(x)) {writeln(-1);exit(0);}chmax(dp[i + 1][j + 1], x);}chmax(dp[i + 1][j], dp[i][j]);}}writeln(dp[n][k]);}