結果
| 問題 |
No.1560 majority x majority
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-09-11 03:32:16 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 945 bytes |
| コンパイル時間 | 889 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 127,936 KB |
| 最終ジャッジ日時 | 2024-06-13 04:34:34 |
| 合計ジャッジ時間 | 7,118 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 5 |
| other | TLE * 1 -- * 25 |
ソースコード
#!/usr/bin/env python3
# from typing import *
import sys
import io
import math
import collections
import decimal
import itertools
import bisect
import heapq
def input():
return sys.stdin.readline()[:-1]
# sys.setrecursionlimit(1000000)
# _INPUT = """6 3
# 1 1 1
# 1 0 1
# 0 0 1
# 1 0 1
# 0 1 0
# 1 1 0
# """
# sys.stdin = io.StringIO(_INPUT)
INF = 10**10
N, M = map(int, input().split())
S = [list(map(int, input().split())) for _ in range(N)]
dp = [0] * (1<<M)
dp[0] = 1
for mask in range(1<<M):
L = []
for i in range(N):
if all(S[i][j0] for j0 in range(M) if mask & (1<<j0)):
L.append(i)
n_all = len(L)
for j in range(M):
if mask & (1<<j):
continue
n_agree = 0
for i in L:
if S[i][j]:
n_agree += 1
if n_agree*2 >= n_all:
mask1 = mask | (1<<j)
dp[mask1] += dp[mask]
ans = dp[(1<<M)-1]
print(ans)