結果
| 問題 |
No.401 数字の渦巻き
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-02-03 12:46:15 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 3 ms / 2,000 ms |
| コード長 | 2,284 bytes |
| コンパイル時間 | 1,721 ms |
| コンパイル使用メモリ | 167,712 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-09-18 21:40:36 |
| 合計ジャッジ時間 | 2,569 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 30 |
ソースコード
#include <bits/stdc++.h>
#define ALL(a) (a).begin(),(a).end()
#define RALL(a) (a).rbegin(), (a).rend()
#define PB push_back
#define MP make_pair
#define SZ(a) int((a).size())
#define EACH(i,c) for(typeof((c).begin()) i=(c).begin(); i!=(c).end(); ++i)
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define SORTASC(c) sort((c).begin(),(c).end())
#define SORTDESC(c,t) sort((c).begin(),(c).end(), std::greater<t>());
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) FOR(i,0,n)
#define VMAX(a) *max_element(ALL(a))
#define VMIN(a) *min_element(ALL(a))
#define dump(x) cerr << #x << " = " << (x) << endl;
#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl;
const double PI = acos(-1.0);
using ll = long long;
using namespace std;
int main() {
ll n;
cin >> n;
ll mat[n][n];
REP(i, n){
REP(j, n){
mat[i][j] = 0;
}
}
ll num = 1, row = 0, col = 0;
while(num <= n*n){
while(true){
if (col < n && mat[row][col] == 0){
mat[row][col] = num;
num++;
col++;
} else {
row++;
col--;
break;
}
}
while(true){
if (row < n && mat[row][col] == 0){
mat[row][col] = num;
num++;
row++;
} else {
row--;
col--;
break;
}
}
while(true){
if (col >= 0 && mat[row][col] == 0){
mat[row][col] = num;
num++;
col--;
} else {
row--;
col++;
break;
}
}
while(true){
if (row >= 0 && mat[row][col] == 0){
mat[row][col] = num;
num++;
row--;
} else {
row++;
col++;
break;
}
}
}
REP(i, n){
REP(j, n-1){
cout << setfill('0') << std::right << setw(3) << mat[i][j] << " ";
}
cout << setfill('0') << std::right << setw(3) << mat[i][n-1] << endl;
}
return 0;
}