結果
| 問題 | No.14 最小公倍数ソート |
| コンテスト | |
| ユーザー |
tnakao0123
|
| 提出日時 | 2016-03-02 14:24:40 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,797 bytes |
| コンパイル時間 | 808 ms |
| コンパイル使用メモリ | 95,788 KB |
| 実行使用メモリ | 7,680 KB |
| 最終ジャッジ日時 | 2024-09-24 13:28:05 |
| 合計ジャッジ時間 | 2,114 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 3 WA * 17 |
ソースコード
/* -*- coding: utf-8 -*-
*
* 14.cc: No.14 最小公倍数ソート - yukicoder
*/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<deque>
#include<algorithm>
#include<numeric>
#include<utility>
#include<complex>
#include<functional>
using namespace std;
/* constant */
const int MAX_N = 10000;
const int MAX_A = 10000;
const int INF = 1 << 30;
/* typedef */
typedef vector<int> vi;
typedef pair<int,int> pii;
typedef set<pii> spii;
/* global variables */
pii ais[MAX_N];
vi dvs[MAX_N];
spii dais[MAX_A + 1];
/* subroutines */
inline int lcm(int a, int b) { return a * b / __gcd(a, b); }
/* main */
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++)
(cin >> ais[i].first), ais[i].second = i;
for (int i = 0; i < n; i++) {
int &ai = ais[i].first;
for (int d = 1; d * d <= ai; d++)
if (ai % d == 0)
dvs[i].push_back(d), dais[d].insert(ais[i]);
if (ai != 1)
dvs[i].push_back(ai), dais[ai].insert(ais[i]);
//for (int j = 0; j < dvs[i].size(); j++) printf("%d ", dvs[i][j]);
//putchar('\n');
}
vi ans;
pii fai(ais[0]);
for (int i = 0; i < n; i++) {
int mincm = INF;
pii minai;
ans.push_back(fai.first);
vi &df = dvs[fai.second];
for (int j = 0; j < df.size(); j++) {
int dj = df[j];
dais[dj].erase(fai);
if (dais[dj].size() > 0) {
pii top = *(dais[dj].begin());
int cm = top.first / dj;
if (mincm > cm || (mincm == cm && minai > top))
mincm = cm, minai = top;
}
}
fai = minai;
}
for (int i = 0; i < n; i++) {
if (i) putchar(' ');
printf("%d", ans[i]);
}
putchar('\n');
return 0;
}
tnakao0123