結果

問題 No.14 最小公倍数ソート
ユーザー 古寺いろは古寺いろは
提出日時 2015-04-15 23:52:04
言語 C++11
(gcc 11.4.0)
結果
AC  
実行時間 4,860 ms / 5,000 ms
コード長 780 bytes
コンパイル時間 1,362 ms
コンパイル使用メモリ 170,740 KB
実行使用メモリ 199,680 KB
最終ジャッジ日時 2024-07-04 14:40:58
合計ジャッジ時間 63,533 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 2 ms
5,376 KB
testcase_02 AC 1 ms
5,376 KB
testcase_03 AC 705 ms
46,976 KB
testcase_04 AC 4,784 ms
196,352 KB
testcase_05 AC 1,381 ms
73,344 KB
testcase_06 AC 1,922 ms
98,688 KB
testcase_07 AC 2,821 ms
123,136 KB
testcase_08 AC 3,550 ms
155,520 KB
testcase_09 AC 4,778 ms
193,920 KB
testcase_10 AC 4,320 ms
186,624 KB
testcase_11 AC 4,817 ms
191,744 KB
testcase_12 AC 4,666 ms
188,416 KB
testcase_13 AC 4,860 ms
199,680 KB
testcase_14 AC 4,768 ms
194,944 KB
testcase_15 AC 4,576 ms
186,240 KB
testcase_16 AC 3,322 ms
150,528 KB
testcase_17 AC 2,989 ms
136,448 KB
testcase_18 AC 1,924 ms
97,792 KB
testcase_19 AC 4,104 ms
175,488 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include "bits/stdc++.h"
using namespace std;

int main() {
	int N;
	cin >> N;
	vector<int> A(N);
	map<int, int> m;
	for (int i = 0; i < N; i++)
	{
		cin >> A[i];
		m[A[i]]++;
	}
	int next = A[0];
	m[next]--;
	cout << next;
	for (int i = 0; i < N - 1; i++)
	{
		vector<int> divisor;
		for (int j = 1; j <= next; j++)
		{
			if (next % j == 0){
				divisor.push_back(j);
				if(j * j != next) divisor.push_back(next / j);
			}
		}

		sort(divisor.begin(), divisor.end());
		int ans = 0;
		for (int j = 1; j <= 10000; j++)
		{
			for (int k: divisor)
			{
				int target = j * k;
				if (m[target]){
					ans = target;
					break;
				}
				if (target >= 10000) break;
			}
			if (ans) break;
		}

		next = ans;
		m[next]--;
		cout << " " << next;
	}
	cout << endl;
	cin >> N;
}



0