結果
| 問題 |
No.217 魔方陣を作ろう
|
| コンテスト | |
| ユーザー |
h_noson
|
| 提出日時 | 2016-04-23 13:12:30 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,698 bytes |
| コンパイル時間 | 585 ms |
| コンパイル使用メモリ | 61,332 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-04 15:18:45 |
| 合計ジャッジ時間 | 1,308 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 14 WA * 4 |
ソースコード
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define RREP(i,s,e) for (i = s; i >= e; i--)
#define rrep(i,n) RREP(i,n,0)
#define REP(i,s,e) for (i = s; i < e; i++)
#define rep(i,n) REP(i,0,n)
#define INF 100000000
typedef long long ll;
int main() {
int i, j, n;
int s[20][20] {};
cin >> n;
if (n % 2 == 1) {
int x, y;
x = 0;
y = n/2;
REP (i,1,n*n+1) {
s[x][y] = i;
x = (x-1+n) % n;
y = (y+1) % n;
if (s[x][y]) {
x = (x+2) % n;
y = (y-1+n) % n;
}
}
}
else if (n % 4 == 0) {
int x, y;
rep (i,n) {
rep (j,n) {
x = i % 4;
y = j % 4;
if (x == y || 3-x == y)
s[i][j] = i*n + j + 1;
else
s[i][j] = n*n - i*n - j;
}
}
}
else {
int sub[9][9] {};
int x, y;
x = 0;
y = n/4;
REP (i,1,n*n/4+1) {
sub[x][y] = i;
x = (x-1+n/2) % (n/2);
y = (y+1) % (n/2);
if (sub[x][y]) {
x = (x+2) % (n/2);
y = (y-1+n/2) % (n/2);
}
}
rep (x,n/2) rep (y,n/2) {
sub[x][y] = (sub[x][y] - 1) * 4;
if (x == n/2+1 && y == n/2+1) {
s[x*2][y*2] = sub[x][y] + 1;
s[x*2+1][y*2] = sub[x][y] + 2;
s[x*2][y*2+1] = sub[x][y] + 4;
s[x*2+1][y*2+1] = sub[x][y] + 3;
}
else if (x == n/2+2 && y == n/2+1) {
s[x*2][y*2] = sub[x][y] + 4;
s[x*2+1][y*2] = sub[x][y] + 2;
s[x*2][y*2+1] = sub[x][y] + 1;
s[x*2+1][y*2+1] = sub[x][y] + 3;
}
else if (x <= n/2+1) {
s[x*2][y*2] = sub[x][y] + 4;
s[x*2+1][y*2] = sub[x][y] + 2;
s[x*2][y*2+1] = sub[x][y] + 1;
s[x*2+1][y*2+1] = sub[x][y] + 3;
}
else if (x == n/2+2) {
s[x*2][y*2] = sub[x][y] + 1;
s[x*2+1][y*2] = sub[x][y] + 2;
s[x*2][y*2+1] = sub[x][y] + 4;
s[x*2+1][y*2+1] = sub[x][y] + 3;
}
else {
s[x*2][y*2] = sub[x][y] + 1;
s[x*2+1][y*2] = sub[x][y] + 3;
s[x*2][y*2+1] = sub[x][y] + 4;
s[x*2+1][y*2+1] = sub[x][y] + 2;
}
}
}
rep (i,n) {
rep (j,n)
cout << s[i][j] << " ";
cout << endl;
}
return 0;
}
h_noson