結果
問題 | No.3092 Tired Queen |
ユーザー |
|
提出日時 | 2025-03-05 10:04:54 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 318 ms / 2,000 ms |
コード長 | 1,050 bytes |
コンパイル時間 | 1,191 ms |
コンパイル使用メモリ | 82,904 KB |
実行使用メモリ | 84,688 KB |
最終ジャッジ日時 | 2025-03-05 10:05:05 |
合計ジャッジ時間 | 10,265 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 41 |
ソースコード
dx=[1,0,-1,0,1,-1,-1,1] dy=[0,1,0,-1,1,1,-1,-1] N=int(input()) F=[[0]*N for i in range(N)] def is_ok(x,y,x0): return x0<=x<N-x0 and x0<=y<N-x0 x=y=0 x0=0 dir=6 for i in range(1,N**2+1): F[x][y]=i if dir==0: if y==x0: dir=5 else: dir=7 elif dir==1: if x==x0: dir=7 else: dir=5 elif dir==5: if y==N-1-x0: dir=0 else: dir=1 elif dir==7: if x==N-1-x0: dir=1 else: dir=0 elif dir==6: dir=0 if x==N-1-x0 and y==N-1-x0: x0+=1 x=x0 y=x0 dir=6 continue; if dir<4: x+=dx[dir] y+=dy[dir] else: ok=0 ng=N+1 while ng-ok>1: mid=(ng+ok)//2 if is_ok(x+mid*dx[dir],y+mid*dy[dir],x0): ok=mid else: ng=mid x+=ok*dx[dir] y+=ok*dy[dir] for i in F: print(*i)