結果
問題 | No.1457 ツブ消ししとるなHard |
ユーザー | tatt61880 |
提出日時 | 2021-04-06 21:39:54 |
言語 | Kuin (KuinC++ v.2021.9.17) |
結果 |
AC
|
実行時間 | 11 ms / 2,000 ms |
コード長 | 1,064 bytes |
コンパイル時間 | 2,551 ms |
コンパイル使用メモリ | 148,632 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-09-16 12:26:50 |
合計ジャッジ時間 | 3,546 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge6 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 17 |
ソースコード
func main() var n: int :: cui@inputInt() var m: int :: cui@inputInt() var x: int :: cui@inputInt() var y: int :: cui@inputInt() var z: int :: cui@inputInt() var a: []int :: #[n]int for i(0, n - 1) do a[i] :: cui@inputInt() end for var b: []int :: #[0]int var remSum: int :: 0 var remNum: int :: 0 for i(0, n - 1) if(y < a[i] & a[i] < x) do b :~ [a[i]] elif(a[i] >= x) do remSum :+ a[i] do remNum :+ 1 end if end for do b.sort() var num: int :: ^b ; dp[i][j] = val ; i: 残したツイート数 ; j: 合計いいね ; val: 通り数 var dp: [][]int :: #[num + 1, num * 50 + 1]int do dp[0][0] :: 1 for k(0, num - 1) for i(k, 0, -1) for j(num * 50, 0, -1) if(dp[i][j] <> 0) do dp[i + 1][j + b[k]] :+ dp[i][j] end if end for end for end for var ans: int :: 0 for i(1, [num, m - remNum].min()) for j(0, num * 50) if((i + remNum) * z = j + remSum) do ans :+ dp[i][j] end if end for end for if(remNum > m) do cui@print("Handicapped\n") else do cui@print("\{ans}\n") end if end func