結果

問題 No.3311 フィルター
コンテスト
ユーザー yu23578
提出日時 2025-10-07 20:49:08
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
TLE  
実行時間 -
コード長 871 bytes
コンパイル時間 377 ms
コンパイル使用メモリ 12,416 KB
実行使用メモリ 28,828 KB
最終ジャッジ日時 2025-10-07 20:49:24
合計ジャッジ時間 16,323 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 17 TLE * 3
権限があれば一括ダウンロードができます

ソースコード

diff #

# 1. 入力の受け取り
ans = True
N, M = map(int, input().split())

A = [0] * M
B = set()  # 3.の存在判定のときに使用

for i in range(M):
    S = input().strip()
    now = 0
    for j in range(N):
        now += (int(S[N - j - 1]) - 0) * (1 << j)
        B.add(now)
    A[i] = now

# 2. 条件1を満たすかの確認
for i in range(M):
    if A[i] == 0:
        ans = False

# 3. 条件2を満たすかの確認
cnt = [0] * (1 << N)  # 4.で使用する配列

for i in range(M):
    cnt[A[i]] += 1
    for j in range(N):
        if (A[i] & (1 << j)) != 0:
            continue
        if (A[i] | (1 << j)) not in B:
            ans = False
        cnt[A[i] | (1 << j)] += 1

# 4. 条件3を満たすかの確認
one = 0
for i in range(1 << N):
    if cnt[i] == 1:
        one += 1
if one >= 2:
    ans = False

# 5. 出力
print("Yes" if ans else "No")
0