結果
| 問題 |
No.3311 フィルター
|
| コンテスト | |
| ユーザー |
yu23578
|
| 提出日時 | 2025-10-07 18:34:25 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 305 ms / 2,000 ms |
| コード長 | 871 bytes |
| コンパイル時間 | 215 ms |
| コンパイル使用メモリ | 82,244 KB |
| 実行使用メモリ | 97,000 KB |
| 最終ジャッジ日時 | 2025-10-25 12:56:44 |
| 合計ジャッジ時間 | 3,098 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 21 |
ソースコード
# 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")
yu23578