結果
問題 | No.14 最小公倍数ソート |
ユーザー | mudbdb |
提出日時 | 2015-06-25 22:33:24 |
言語 | C90 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 3,713 ms / 5,000 ms |
コード長 | 1,289 bytes |
コンパイル時間 | 246 ms |
コンパイル使用メモリ | 22,272 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-07 17:38:45 |
合計ジャッジ時間 | 41,823 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
6,812 KB |
testcase_01 | AC | 1 ms
6,940 KB |
testcase_02 | AC | 1 ms
6,940 KB |
testcase_03 | AC | 38 ms
6,944 KB |
testcase_04 | AC | 3,713 ms
6,944 KB |
testcase_05 | AC | 1,232 ms
6,944 KB |
testcase_06 | AC | 1,462 ms
6,944 KB |
testcase_07 | AC | 1,937 ms
6,940 KB |
testcase_08 | AC | 2,523 ms
6,944 KB |
testcase_09 | AC | 3,416 ms
6,940 KB |
testcase_10 | AC | 3,347 ms
6,940 KB |
testcase_11 | AC | 3,457 ms
6,944 KB |
testcase_12 | AC | 3,630 ms
6,940 KB |
testcase_13 | AC | 3,623 ms
6,948 KB |
testcase_14 | AC | 3,491 ms
6,944 KB |
testcase_15 | AC | 3,648 ms
6,944 KB |
testcase_16 | AC | 1,364 ms
6,940 KB |
testcase_17 | AC | 978 ms
6,940 KB |
testcase_18 | AC | 429 ms
6,940 KB |
testcase_19 | AC | 2,265 ms
6,940 KB |
コンパイルメッセージ
main.c: In function ‘main’: main.c:53:3: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 53 | scanf("%d", &N); | ^~~~~~~~~~~~~~~ main.c:56:23: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 56 | for (i=0; i<N; i++) scanf("%d", &(A[i].a)); | ^~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include <stdio.h> #include <stdlib.h> struct num_info { int a; int lcm; }; int gcd(int a, int b) { int r; int ans; if (a < b) { r = b % a; while (r) { b = a; a = r; r = b % a; } ans = a; } else if (a > b) { r = a % b; while (r) { a = b; b = r; r = a % b; } ans = b; } else { ans = a; } return ans; } int search_min(struct num_info *A, int N) { int i; int min = ~(1 << 31); int min_i; for (i=0; i<N; i++) { if (A[i].lcm < min) { min = A[i].lcm; min_i = i; } else if (A[i].lcm == min) { if (A[i].a < A[min_i].a) { min_i = i; } } } return min_i; } int main() { int N; struct num_info *A; scanf("%d", &N); A = (struct num_info*)malloc(sizeof(struct num_info)*N); int i; for (i=0; i<N; i++) scanf("%d", &(A[i].a)); if (N >= 3) { int j, k; for (i=0; i<N-2; i++) { for (j=i+1; j<N; j++) { A[j].lcm = A[i].a*A[j].a/gcd(A[i].a, A[j].a); } k = search_min(&(A[i+1]), N-(i+1)); if (k > 0) { struct num_info W; W = A[i+1]; A[i+1] = A[(i+1)+k]; A[(i+1)+k] = W; } } } for (i=0; i<N-1; i++) printf("%d ", A[i].a); printf("%d\n", A[N-1].a); return 0; }