結果
| 問題 |
No.1457 ツブ消ししとるなHard
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-05-02 23:15:03 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,339 bytes |
| コンパイル時間 | 230 ms |
| コンパイル使用メモリ | 81,920 KB |
| 実行使用メモリ | 84,992 KB |
| 最終ジャッジ日時 | 2024-07-21 08:23:30 |
| 合計ジャッジ時間 | 2,255 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 16 WA * 1 |
ソースコード
import collections
import math
import sys
def resolve():
n,m,x,y,z = map(int,sys.stdin.readline().split())
notdeletesum = 0
notdeletecnt = 0
select = []
for ai in map(int,sys.stdin.readline().split()):
if ai<=y: continue
elif ai>=x:
notdeletecnt += 1
notdeletesum += ai
else:
select.append(ai)
if notdeletecnt > m:
print('Handicapped')
return
if z == 0:
if notdeletecnt > 0:
print(0)
else:
print(1)
return
if len(select) == 0:
if notdeletesum == z * notdeletecnt:
print(1)
else:
print(0)
return
length = len(select)
dp = [[collections.defaultdict(int) for _ in range(length+1)] for __ in range(length)]
dp[0][0][0]=1
dp[0][1][select[0]]=1
for i, ai in enumerate(select[1:],1):
for j in range(i+2):
if j + notdeletecnt > m: break
for k in dp[i-1][j]:
dp[i][j][k] += dp[i-1][j][k]
dp[i][j+1][k+ai] += dp[i-1][j][k]
result = 0
for j, sum_case in enumerate(dp[-1]):
if notdeletecnt + j == 0: continue
tmp = z * (notdeletecnt + j) - notdeletesum
result += sum_case[tmp]
print(result)
resolve()