結果
問題 | No.2270 T0空間 |
ユーザー | kakel-san |
提出日時 | 2023-07-05 18:47:33 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 808 ms / 2,000 ms |
コード長 | 2,109 bytes |
コンパイル時間 | 2,750 ms |
コンパイル使用メモリ | 111,996 KB |
実行使用メモリ | 66,432 KB |
最終ジャッジ日時 | 2024-07-19 13:04:21 |
合計ジャッジ時間 | 11,054 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 25 ms
18,688 KB |
testcase_01 | AC | 25 ms
18,816 KB |
testcase_02 | AC | 24 ms
19,072 KB |
testcase_03 | AC | 24 ms
18,560 KB |
testcase_04 | AC | 24 ms
18,944 KB |
testcase_05 | AC | 24 ms
18,816 KB |
testcase_06 | AC | 25 ms
18,688 KB |
testcase_07 | AC | 25 ms
18,944 KB |
testcase_08 | AC | 24 ms
18,816 KB |
testcase_09 | AC | 24 ms
18,816 KB |
testcase_10 | AC | 23 ms
18,944 KB |
testcase_11 | AC | 95 ms
27,264 KB |
testcase_12 | AC | 65 ms
24,832 KB |
testcase_13 | AC | 184 ms
33,024 KB |
testcase_14 | AC | 190 ms
33,024 KB |
testcase_15 | AC | 194 ms
33,024 KB |
testcase_16 | AC | 360 ms
44,032 KB |
testcase_17 | AC | 798 ms
66,176 KB |
testcase_18 | AC | 808 ms
66,304 KB |
testcase_19 | AC | 624 ms
66,432 KB |
testcase_20 | AC | 655 ms
66,432 KB |
testcase_21 | AC | 608 ms
66,304 KB |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int NN => int.Parse(ReadLine()); static string[] SList(long n) => Enumerable.Repeat(0, (int)n).Select(_ => ReadLine()).ToArray(); public static void Main() { Solve(); } static void Solve() { var n = NN; var m = NN; var s = SList(m); WriteLine(T0(n, m, s) ? "Yes" : "No"); } static bool T0(int n, int m, string[] s) { var b = new Bitset[n]; for (var i = 0; i < b.Length; ++i) { b[i] = new Bitset(n); b[i].Set(i, 1); } foreach (var si in s) { var zero = new Bitset(n); var one = new Bitset(n); for (var i = 0; i < si.Length; ++i) { if (si[i] == '0') zero.Set(i, 1); else one.Set(i, 1); } for (var i = 0; i < si.Length; ++i) { if (si[i] == '0') b[i].Or(one); else b[i].Or(zero); } } foreach (var bi in b) { if (bi.Expand().Any(i => i == 0)) return false; } return true; } class Bitset { int _length; ulong[] data; public Bitset(int length) { _length = length; data = new ulong[(length + 63) / 64]; } public void Set(int pos, int val) { if (val == 0) data[pos / 64] = (data[pos / 64] ^ ((ulong)1 << (pos % 64))); else data[pos / 64] = (data[pos / 64] | ((ulong)1 << (pos % 64))); } public void Or(Bitset b) { for (var i = 0; i < data.Length; ++i) data[i] = data[i] | b.data[i]; } public int[] Expand() { var ans = new int[_length]; for (var i = 0; i < _length; ++i) ans[i] = (int)((data[i / 64] >> (i % 64)) % 2); return ans; } } }