結果
| 問題 | No.14 最小公倍数ソート |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-12-11 22:04:43 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 4,678 ms / 5,000 ms |
| コード長 | 736 bytes |
| コンパイル時間 | 536 ms |
| コンパイル使用メモリ | 65,604 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-09-22 21:59:20 |
| 合計ジャッジ時間 | 52,147 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 |
コンパイルメッセージ
main.cpp: In function 'int main()':
main.cpp:28:63: warning: 'tmp' may be used uninitialized [-Wmaybe-uninitialized]
28 | if (min == array[j].lcm && array[tmp].a > array[j].a) tmp = j;
| ~~~~~~~~~~~^
main.cpp:20:19: note: 'tmp' was declared here
20 | size_t N, tmp;
| ^~~
ソースコード
#include <climits>
#include <iostream>
#include <utility>
using namespace std;
struct sequence {
int a, lcm;
};
int gcd(int a, int b) {
return b ? gcd(b, a % b) : a;
}
int LCM(int a, int b) {
return a * b / gcd(a, b);
}
int main() {
int min;
size_t N, tmp;
sequence array[10000];
cin >> N;
for (size_t i = 0; i < N; ++i) cin >> array[i].a;
for (size_t i = 0; i < N - 1; ++i) {
min = INT_MAX;
for (size_t j = i + 1; j < N; ++j) {
array[j].lcm = LCM(array[i].a, array[j].a);
if (min == array[j].lcm && array[tmp].a > array[j].a) tmp = j;
else if (min > array[j].lcm) {
min = array[j].lcm;
tmp = j;
}
}
swap(array[i + 1], array[tmp]);
}
for (size_t i = 0; i < N; ++i) cout << array[i].a << ' ';
}