結果
| 問題 |
No.506 限られたジャパリまん
|
| コンテスト | |
| ユーザー |
sue_charo
|
| 提出日時 | 2017-06-01 22:35:46 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,724 bytes |
| コンパイル時間 | 283 ms |
| コンパイル使用メモリ | 13,056 KB |
| 実行使用メモリ | 11,776 KB |
| 最終ジャッジ日時 | 2024-06-28 04:17:47 |
| 合計ジャッジ時間 | 3,334 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 16 WA * 9 |
ソースコード
# coding: utf-8
import array, bisect, collections, copy, heapq, itertools, math, random, re, string, sys, time
sys.setrecursionlimit(10 ** 7)
INF = 10 ** 20
MOD = 10 ** 9 + 7
def II(): return int(input())
def ILI(): return list(map(int, input().split()))
def IAI(LINE): return [ILI() for __ in range(LINE)]
def IDI(): return {key: value for key, value in ILI()}
def nCk(n, k):
return math.factorial(n) // (math.factorial(n - k) * math.factorial(k))
def read():
H, W, K, P = ILI()
ani = []
for __ in range(K):
x, y, name = input().split()
ani.append((int(x), int(y), str(name)))
return (H, W, K, P, ani)
def solve(H, W, K, P, ani):
ans_num = 0
ans_ind = 0
dif_k = K - P
for ani_ind in itertools.combinations(range(K), dif_k):
board = [[1] * (W + 1) for __ in range(H + 1)]
for ind in ani_ind:
x, y, name = ani[ind]
board[x][y] = 0
for w in range(1, W + 1):
for h in range(1, H + 1):
if board[h][w] == 0:
continue
else:
board[h][w] = board[h - 1][w] + board[h][w - 1]
if ans_num < board[H][W]:
ans_num = board[H][W]
ans_ind = ani_ind
if ans_num == 0:
return 0
else:
ans = []
ans.append(ans_num % MOD)
for ind in range(K):
if ind in ans_ind:
continue
x, y, name = ani[ind]
ans.append(name)
return ans
def main():
params = read()
ans = solve(*params)
if isinstance(ans, int):
print(ans)
else:
for a in ans:
print(a)
if __name__ == "__main__":
main()
sue_charo