結果

問題 No.401 数字の渦巻き
ユーザー moti
提出日時 2016-07-22 22:29:47
言語 C++14
(gcc 8.3.0)
結果
AC  
実行時間 4 ms
コード長 1,471 Byte
コンパイル時間 852 ms
使用メモリ 1,516 KB
最終ジャッジ日時 2019-11-26 09:48:24

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
01.txt AC 4 ms
1,512 KB
02.txt AC 3 ms
1,508 KB
03.txt AC 4 ms
1,512 KB
04.txt AC 4 ms
1,512 KB
05.txt AC 3 ms
1,512 KB
06.txt AC 4 ms
1,512 KB
07.txt AC 4 ms
1,508 KB
08.txt AC 3 ms
1,512 KB
09.txt AC 3 ms
1,512 KB
10.txt AC 4 ms
1,508 KB
11.txt AC 3 ms
1,508 KB
12.txt AC 3 ms
1,508 KB
13.txt AC 3 ms
1,512 KB
14.txt AC 3 ms
1,508 KB
15.txt AC 4 ms
1,508 KB
16.txt AC 4 ms
1,508 KB
17.txt AC 4 ms
1,508 KB
18.txt AC 4 ms
1,508 KB
19.txt AC 3 ms
1,512 KB
20.txt AC 3 ms
1,508 KB
21.txt AC 4 ms
1,508 KB
22.txt AC 4 ms
1,512 KB
23.txt AC 4 ms
1,508 KB
24.txt AC 4 ms
1,508 KB
25.txt AC 4 ms
1,508 KB
26.txt AC 4 ms
1,508 KB
27.txt AC 4 ms
1,508 KB
28.txt AC 4 ms
1,508 KB
29.txt AC 4 ms
1,516 KB
30.txt AC 4 ms
1,512 KB
テストケース一括ダウンロード

ソースコード

diff #
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <complex>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <iomanip>
#include <assert.h>
#include <array>
#include <cstdio>
#include <cstring>
#include <random>
#include <functional>
#include <numeric>
#include <bitset>
#include <fstream>

using namespace std;

#define REP(i,a,b) for(int i=a;i<(int)b;i++)
#define rep(i,n) REP(i,0,n)
#define all(c) (c).begin(), (c).end()
#define zero(a) memset(a, 0, sizeof a)
#define minus(a) memset(a, -1, sizeof a)
#define watch(a) { cout << #a << " = " << a << endl; }
template<class T1, class T2> inline bool minimize(T1 &a, T2 b) { return b < a && (a = b, 1); }
template<class T1, class T2> inline bool maximize(T1 &a, T2 b) { return a < b && (a = b, 1); }

typedef long long ll;
int const inf = 1<<29;

int a[33][33];

int dx[4] = {-1,0,1,0};
int dy[4] = {0,-1,0,1};

template<class T> constexpr bool in_range(T y, T x, T H, T W) { return 0<=y&&y<H&&0<=x&&x<W; }

int main() {

  int N; cin >> N;
  int y = 0, x = 0;
  int k = 2;
  int cnt = 1;
  while(cnt <= N * N) {
    a[y][x] = cnt++;
    int ny = y + dy[k], nx = x + dx[k];
    if(!in_range(ny, nx, N, N) || a[ny][nx]) {
      k ++;
      k %= 4;
      ny = y + dy[k], nx = x + dx[k];
    }
    y = ny, x = nx;
  }

  rep(i, N) rep(j, N) {
    printf("%03d%c", a[i][j], j == N-1 ? '\n' : ' ');
  }
  
  return 0;
}
0