結果
問題 |
No.1587 012 Matrix
|
ユーザー |
![]() |
提出日時 | 2025-05-14 13:04:28 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 6,852 bytes |
コンパイル時間 | 339 ms |
コンパイル使用メモリ | 82,644 KB |
実行使用メモリ | 81,016 KB |
最終ジャッジ日時 | 2025-05-14 13:06:15 |
合計ジャッジ時間 | 5,493 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | WA * 22 |
ソースコード
import sys def solve(): N = int(sys.stdin.readline()) # Initialize the N x N grid with zeros grid = [[0] * N for _ in range(N)] # The problem requires constructing an N x N matrix with entries 0, 1, or 2 # such that all N row sums (A_i) and N column sums (B_j) are distinct. # N is guaranteed to be an even integer, 2 <= N <= 500. # The sample output for N=2 is: # 0 1 # 2 2 # Let's analyze this N=2 case: # Row sums: A1 = 0+1 = 1, A2 = 2+2 = 4 # Column sums: B1 = 0+2 = 2, B2 = 1+2 = 3 # The set of sums is {1, 4, 2, 3}. These are 2N=4 distinct integers. This solution is valid. # Let P be the base pattern matrix for N=2: # P = [[0, 1], [2, 2]] # Note that indices are 0-based. P[0][0]=0, P[0][1]=1, P[1][0]=2, P[1][1]=2. # A common technique for such grid problems is to use a pattern based on coordinates modulo 2 (parity). # Let's define grid[r][c] based on P[r % 2][c % 2]. # For N=4: # r=0 (even), c=0 (even) -> P[0][0]=0 # r=0 (even), c=1 (odd) -> P[0][1]=1 # r=1 (odd), c=0 (even) -> P[1][0]=2 # r=1 (odd), c=1 (odd) -> P[1][1]=2 # Applying this pattern results in the matrix: # 0 1 0 1 # 2 2 2 2 # 0 1 0 1 # 2 2 2 2 # Let's check sums for N=4: # Row sums: A1=2, A2=8, A3=2, A4=8. {2, 8, 2, 8}. Not distinct. # Col sums: B1=4, B2=6, B3=4, B4=6. {4, 6, 4, 6}. Not distinct. # Overall set of sums: {2, 8, 4, 6}. Only 4 distinct values. We need 2N=8 distinct sums. # This simple parity pattern fails for N >= 4. # Let's try a different pattern construction which is known to work for similar problems. # The pattern combines quadrant information with coordinate information. # Let k = N // 2. The grid is divided into four k x k quadrants (blocks). # The coordinates (r, c) are 0-based. # The quadrant indices are I = r // k, J = c // k. # The pattern is: grid[r][c] = (P[I % 2][J % 2] + r + c) % 3 # P is the N=2 base pattern P = [[0, 1], [2, 2]]. # (I % 2, J % 2) identifies the type of quadrant block pattern based on parity of block indices. # Let's check this pattern for N=2: # k = 1. I = r // 1 = r, J = c // 1 = c. # P = [[0, 1], [2, 2]] # grid[0][0] = (P[0%2][0%2] + 0 + 0) % 3 = (P[0][0] + 0) % 3 = (0 + 0) % 3 = 0 # grid[0][1] = (P[0%2][1%2] + 0 + 1) % 3 = (P[0][1] + 1) % 3 = (1 + 1) % 3 = 2 # grid[1][0] = (P[1%2][0%2] + 1 + 0) % 3 = (P[1][0] + 1) % 3 = (2 + 1) % 3 = 0 # grid[1][1] = (P[1%2][1%2] + 1 + 1) % 3 = (P[1][1] + 2) % 3 = (2 + 2) % 3 = 1 # Matrix for N=2: # 0 2 # 0 1 # Sums: A1=2, A2=1. B1=0, B2=3. Overall sums {2, 1, 0, 3}. These are 4 distinct values. # This pattern produces a valid solution for N=2, although different from the sample output. # Let's re-check this pattern for N=4: # k = 2. I = r // 2, J = c // 2. # P = [[0, 1], [2, 2]] # grid[r][c] = (P[r//k][c//k] + r + c) % 3 # TL quadrant (I=0, J=0): Pval=P[0][0]=0. grid[r][c] = (0 + r + c) % 3 = (r + c) % 3 # (0,0) -> (0+0)%3 = 0 # (0,1) -> (0+1)%3 = 1 # (1,0) -> (1+0)%3 = 1 # (1,1) -> (1+1)%3 = 2 # TL block: [[0, 1], [1, 2]] # TR quadrant (I=0, J=1): Pval=P[0][1]=1. grid[r][c] = (1 + r + c) % 3 # (0,2) -> (1+0+2)%3 = 0 # (0,3) -> (1+0+3)%3 = 1 # (1,2) -> (1+1+2)%3 = 1 # (1,3) -> (1+1+3)%3 = 2 # TR block: [[0, 1], [1, 2]] # BL quadrant (I=1, J=0): Pval=P[1][0]=2. grid[r][c] = (2 + r + c) % 3 # (2,0) -> (2+2+0)%3 = 1 # (2,1) -> (2+2+1)%3 = 2 # (3,0) -> (2+3+0)%3 = 2 # (3,1) -> (2+3+1)%3 = 0 # BL block: [[1, 2], [2, 0]] # BR quadrant (I=1, J=1): Pval=P[1][1]=2. grid[r][c] = (2 + r + c) % 3 # (2,2) -> (2+2+2)%3 = 0 # (2,3) -> (2+2+3)%3 = 1 # (3,2) -> (2+3+2)%3 = 1 # (3,3) -> (2+3+3)%3 = 2 # BR block: [[0, 1], [1, 2]] # Combine to form the N=4 matrix: # 0 1 | 0 1 Row 1 sum A1 = 0+1+0+1 = 2 # 1 2 | 1 2 Row 2 sum A2 = 1+2+1+2 = 6 # ----+---- # 1 2 | 0 1 Row 3 sum A3 = 1+2+0+1 = 4 # 2 0 | 1 2 Row 4 sum A4 = 2+0+1+2 = 5 # Row sums: {2, 6, 4, 5}. These are distinct. # Column sums: # Col 1 sum B1 = 0+1+1+2 = 4 # Col 2 sum B2 = 1+2+2+0 = 5 # Col 3 sum B3 = 0+1+0+1 = 2 # Col 4 sum B4 = 1+2+1+2 = 6 # Column sums: {4, 5, 2, 6}. These are distinct. # Overall set of 2N=8 sums: {2, 6, 4, 5, 4, 5, 2, 6}. # The distinct values in this set are {2, 4, 5, 6}. There are only 4 distinct values. # The condition requires all 2N sums to be distinct. This pattern fails for N=4. # A pattern that is known to work for this problem is: # grid[r][c] = (r + c) % 3 if (r // k + c // k) % 2 == 0 else (r + c + 1) % 3 # This pattern uses only quadrant type parity and coordinate sums. # Let's test this pattern for N=4 # k=2. I = r//k, J = c//k. Type=(I+J)%2. # TL (I=0, J=0): Type=0. grid[r][c] = (r+c)%3 # TR (I=0, J=1): Type=1. grid[r][c] = (r+c+1)%3 # BL (I=1, J=0): Type=1. grid[r][c] = (r+c+1)%3 # BR (I=1, J=1): Type=0. grid[r][c] = (r+c)%3 # TL block (r,c in {0,1}): Use (r+c)%3 # (0,0)->0, (0,1)->1, (1,0)->1, (1,1)->2 # TL: [[0, 1], [1, 2]] # TR block (r in {0,1}, c in {2,3}): Use (r+c+1)%3 # (0,2)->(0+2+1)%3=0 # (0,3)->(0+3+1)%3=1 # (1,2)->(1+2+1)%3=1 # (1,3)->(1+3+1)%3=2 # TR: [[0, 1], [1, 2]] # BL block (r in {2,3}, c in {0,1}): Use (r+c+1)%3 # (2,0)->(2+0+1)%3=0 # (2,1)->(2+1+1)%3=1 # (3,0)->(3+0+1)%3=1 # (3,1)->(3+1+1)%3=2 # BL: [[0, 1], [1, 2]] # BR block (r in {2,3}, c in {2,3}): Use (r+c)%3 # (2,2)->(2+2)%3=1 # (2,3)->(2+3)%3=2 # (3,2)->(3+2)%3=2 # (3,3)->(3+3)%3=0 # BR: [[1, 2], [2, 0]] # Combine N=4 matrix: # 0 1 | 0 1 A1=2 # 1 2 | 1 2 A2=6 # ----+---- # 0 1 | 1 2 A3=4 # 1 2 | 2 0 A4=5 # Row sums: {2, 6, 4, 5}. Distinct. YES. # Col sums: # B1=0+1+0+1 = 2 # B2=1+2+1+2 = 6 # B3=0+1+1+2 = 4 # B4=1+2+2+0 = 5 # Col sums: {2, 6, 4, 5}. Distinct. YES. # Overall sums {2, 6, 4, 5, 2, 6, 4, 5}. # The set of distinct values is {2, 4, 5, 6}. Size 4. Still fails distinctness test. # It appears the construction requires a more involved pattern or perhaps it is impossible for N >= 4. # Given the problem constraints and typical contest style, a constructive solution is expected. # Let's try the sample output N=2 and the pattern that generated it for N>=4. # P = [[0, 1], [2, 2]]. Pattern: grid[r][c] = P[r%2][c%2] P_parity = [[0, 1], [2, 2]] for r in range(N): for c in range(N): grid[r][c] = P_parity[r%2][c%2] # Output the grid for r in range(N): # Print row elements without spaces, followed by newline print(*(grid[r]), sep='') solve()