結果
| 問題 | No.14 最小公倍数ソート |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-02-09 15:42:01 |
| 言語 | PyPy2 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 966 bytes |
| コンパイル時間 | 1,225 ms |
| コンパイル使用メモリ | 76,700 KB |
| 実行使用メモリ | 98,272 KB |
| 最終ジャッジ日時 | 2024-06-23 16:21:58 |
| 合計ジャッジ時間 | 8,910 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 4 TLE * 1 -- * 15 |
ソースコード
# -*- coding: utf-8 -*-
def solve(N, data):
GC = 1000
memo = [[None for i in xrange(GC)] for i in xrange(GC)]
def gcd(a, b):
if b == 0:
return a
if a < GC and b < GC:
if not (memo[a][b] is None):
return memo[a][b]
memo[a][b] = gcd(b, a % b)
return memo[a][b]
return gcd(b, a % b)
def bcd(a, b):
return a * b / gcd(a, b)
result = [0] * N
result[0] = data[0]
del data[0]
ans_p = 1
while ans_p < N:
mn = -1
index = 0
for i, v in enumerate(data):
a = bcd(result[ans_p - 1], v)
if mn == -1 or mn > a or (mn == a and data[index] > v):
mn = a
index = i
result[ans_p] = data[index]
ans_p += 1
del data[index]
return result
N = int(raw_input())
data = map(int, raw_input().split(" "))
print " ".join(map(str, solve(N, data)))