結果
| 問題 |
No.1631 Sorting Integers (Multiple of K) Easy
|
| コンテスト | |
| ユーザー |
mkawa2
|
| 提出日時 | 2021-07-31 15:36:46 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,234 ms / 3,000 ms |
| コード長 | 1,346 bytes |
| コンパイル時間 | 476 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 205,696 KB |
| 最終ジャッジ日時 | 2024-09-16 09:33:30 |
| 合計ジャッジ時間 | 12,312 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 28 |
ソースコード
import sys
# sys.setrecursionlimit(200005)
int1 = lambda x: int(x)-1
p2D = lambda x: print(*x, sep="\n")
def II(): return int(sys.stdin.readline())
def LI(): return list(map(int, sys.stdin.readline().split()))
def LI1(): return list(map(int1, sys.stdin.readline().split()))
def LLI(rows_number): return [LI() for _ in range(rows_number)]
def LLI1(rows_number): return [LI1() for _ in range(rows_number)]
def SI(): return sys.stdin.readline().rstrip()
# dij = [(0, 1), (-1, 0), (0, -1), (1, 0)]
dij = [(0, 1), (-1, 0), (0, -1), (1, 0), (1, 1), (1, -1), (-1, 1), (-1, -1)]
inf = 10**16
# md = 998244353
md = 10**9+7
n, k = LI()
ac = LI()
ten = [1]
for _ in range(n): ten.append(ten[-1]*10%k)
aa = []
for a, c in enumerate(ac, 1):
aa += [a]*c
dp = [[0]*k for _ in range(1 << n)]
dp[0][0] = 1
popcnt = lambda x: bin(x).count("1")
def ng(s, j):
a = aa[j]
for i in range(j-1, -1, -1):
if aa[i] == a:
if s >> i & 1 == 0: return True
else:
break
return False
for s in range(1 << n):
c = popcnt(s)
for r in range(k):
pre = dp[s][r]
if pre == 0: continue
for j, a in enumerate(aa):
if s >> j & 1: continue
if ng(s, j): continue
ns = s | 1 << j
nr = (r+a*ten[c])%k
dp[ns][nr] += pre
print(dp[-1][0])
mkawa2