結果
問題 | No.1330 Multiply or Divide |
ユーザー |
|
提出日時 | 2023-04-24 01:28:41 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 153 ms / 2,000 ms |
コード長 | 918 bytes |
コンパイル時間 | 448 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 115,328 KB |
最終ジャッジ日時 | 2024-11-08 06:18:09 |
合計ジャッジ時間 | 7,075 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 46 |
ソースコード
import heapqINF = 1 << 60n, m, p = map(int, input().split())a = list(map(int, input().split()))if any([x > m for x in a]):print("1")exit()idx = {}q = []for i in range(n):cur = a[i]cnt = 1while cur % p == 0:cnt += 1cur //= pq.append((a[i], cur))if idx.get(cnt, None) is None or a[idx[cnt]] < a[i]:idx[cnt] = idist = {}dist[1] = 0hp = [(0, 1)]ans = INFwhile len(hp) > 0:cd, cur = heapq.heappop(hp)if cd > dist[cur]:continuefor cost, i in idx.items():ai, d = q[i]nxt = cur * aiif dist.get(nxt, INF) > dist[cur] + 1:if nxt > m:ans = min(ans, dist[cur] + 1)nxt = cur * dif dist.get(nxt, INF) > dist[cur] + cost:if nxt > m:ans = min(ans, dist[cur] + cost)else:dist[nxt] = dist[cur] + costheapq.heappush(hp, (dist[nxt], nxt))if ans < INF:print(ans)else:print("-1")