結果
問題 | No.14 最小公倍数ソート |
ユーザー |
|
提出日時 | 2015-04-23 07:44:43 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 4,533 ms / 5,000 ms |
コード長 | 641 bytes |
コンパイル時間 | 2,047 ms |
コンパイル使用メモリ | 159,896 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-05 00:28:39 |
合計ジャッジ時間 | 51,874 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 20 |
ソースコード
#include "bits/stdc++.h" using namespace std; typedef long long Int; #define REP(i,n) for(int (i)=0;(i)<(int)(n);++(i)) int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } int lcm(int a, int b) { return a / gcd(a, b) * b; } int a[10000]; int main() { int N; cin >> N; REP(i, N) cin >> a[i]; REP(i, N-1) { int k = i + 1; int m = lcm(a[i], a[i + 1]); for (int j = i + 2; j < N; j++) { int m1 = lcm(a[i], a[j]); if (m > m1 || m == m1 && a[k] > a[j]) { m = m1; k = j; } } if (i + 1 != k) swap(a[i + 1], a[k]); } cout << a[0]; for (int i = 1; i < N; i++) cout << " " << a[i]; cout << endl; }