結果
問題 | No.2702 Nand Nor Matrix |
ユーザー |
![]() |
提出日時 | 2024-03-29 22:58:37 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 285 ms / 2,000 ms |
コード長 | 1,780 bytes |
コンパイル時間 | 302 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 132,356 KB |
最終ジャッジ日時 | 2024-09-30 16:43:45 |
合計ジャッジ時間 | 16,895 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 51 |
ソースコード
import sys input = sys.stdin.readline T = 20 def naive(N, A, B, qs): X = [[[0] * N for _ in range(N)] for _ in range(T)] for i in range(N): X[0][0][i] = A[i] for i in range(1, N): X[0][i][0] = B[i] # print(*["".join(map(str, row)) for row in X], sep="\n") # print() for t in range(1, T): for i in range(N): for j in range(N): if i == 0 or j == 0: X[t][i][j] = X[t - 1][i][j] else: X[t][i][j] = ( 0 if X[t - 1][i][j] + X[t - 1][i - 1][j] + X[t - 1][i][j - 1] >= 2 else 1 ) # print(*["".join(map(str, row)) for row in X], sep="\n") # print() return [X[t][r][c] for t, r, c in qs] def solve(N, A, B, qs): if N == 1: return [A[0]] * len(qs) row = [-1] * N row[0] = B[1] for i in range(1, N): if row[i - 1] == A[i]: row[i] = A[i] ^ 1 else: break col = [-1] * N col[0] = A[1] for i in range(1, N): if col[i - 1] == B[i]: col[i] = B[i] ^ 1 else: break ans = [] for t, r, c in qs: x = -1 if r == 0: x = A[c] elif c == 0: x = B[r] elif col[r] == -1 or row[c] == -1 or r + c > t + 1: x = t % 2 else: x = A[c] ^ B[r] ^ A[1] ^ 1 ans.append(x) return ans N = int(input()) A = list(map(int, input().split())) B = [A[0]] + [int(input()) for _ in range(N - 1)] Q = int(input()) qs = [] for _ in range(Q): t, r, c = map(int, input().split()) qs.append((t, r - 1, c - 1)) print(*solve(N, A, B, qs), sep="\n")