結果
| 問題 |
No.1061 素敵な数列
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-05-25 15:25:59 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 149 ms / 2,000 ms |
| コード長 | 1,778 bytes |
| コンパイル時間 | 159 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 110,464 KB |
| 最終ジャッジ日時 | 2024-10-13 02:04:48 |
| 合計ジャッジ時間 | 5,774 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 33 |
ソースコード
#!/usr/bin/env python3
import sys
readline = sys.stdin.buffer.readline
sys.setrecursionlimit(10 ** 7)
# The author read the editorial.
def join_b(a, b):
ret = a.copy()
last = ret.pop()
ret.append(b.pop())
ret.append(last)
for elem in reversed(b):
ret.append(elem)
return ret
def make_a(n):
assert n != 2
if n == 0:
return []
if n == 5:
a = [3, 4, 2, 2, 3, 3, 2, 4, 4]
b = make_b(2)
return join_b(a, b)
if n % 2 == 1:
a = []
for i in range(n // 2, n):
a.append(i)
for i in range(n // 2, n):
a.append(i)
a.append(i)
b = make_a(n // 2)
return a + b
assert n % 2 == 0
a = []
for i in range(n // 2, n):
a.append(i)
a.append(n - 1)
for i in range(n // 2, n - 1):
a.append(i)
a.append(i)
a.append(n - 1)
b = make_b(n // 2)
return join_b(a, b)
def make_b(n):
assert n >= 2
if n == 3:
return [0, 0, 0, 2, 1, 2, 1, 1, 2]
if n == 4:
return [0, 0, 0, 3, 1, 3, 1, 1, 2, 2, 3, 2]
if n % 2 == 1:
a = []
for i in range(n // 2, n):
a.append(i)
for i in range(n // 2, n):
a.append(i)
a.append(i)
b = make_b(n // 2)
return a + b
assert n % 2 == 0
a = []
for i in range(n // 2, n):
a.append(i)
a.append(n - 1)
for i in range(n // 2, n - 1):
a.append(i)
a.append(i)
a.append(n - 1)
b = make_a(n // 2)
return b + a
n = int(readline())
if n == 2:
print(-1)
exit()
ans = make_a(n)
for i in range(3 * n):
print(ans[i], end='')
if i == 3 * n - 1:
print()
else:
print(' ', end='')