結果
| 問題 | No.10 +か×か |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2016-11-11 17:59:47 |
| 言語 | PyPy2 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 925 bytes |
| 記録 | |
| コンパイル時間 | 449 ms |
| コンパイル使用メモリ | 77,352 KB |
| 最終ジャッジ日時 | 2025-12-03 22:38:44 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 4 TLE * 1 -- * 7 |
ソースコード
def routing(dp, A, n, total, route):
if n==0: return route
ans=[]
if dp[n][total]==1:
for r in route:
ans.append("+"+r)
return routing(dp,A,n-1,total-A[n],ans)
elif dp[n][total]==2:
for r in route:
ans.append("*"+r)
return routing(dp,A,n-1,total/A[n],ans)
elif dp[n][total]==3:
for r in route:
e1=[]
e2=[]
e1.append("+"+r)
e2.append("*"+r)
a1=routing(dp,A,n-1,total-A[n],e1)
a2=routing(dp,A,n-1,total/A[n],e2)
return a1+a2
N=int(raw_input())
T=int(raw_input())
A=map(int,raw_input().split())
dp=[[0]*(T+1) for _ in xrange(N)]
dp[0][A[0]]=1
for i in xrange(1,N):
# sum
for j in xrange(T):
if dp[i-1][j]>0 and j+A[i]<=T:
dp[i][j+A[i]]+=1
# multiple
for j in xrange(T/A[i]+1):
if dp[i-1][j]>0 and j*A[i]<=T:
dp[i][j*A[i]]+=2
if T < j*A[i]: break
print sorted(routing(dp,A,N-1,T,["-"]),reverse=True)[0].replace("-","")