結果
問題 | No.14 最小公倍数ソート |
ユーザー | なお |
提出日時 | 2014-11-01 06:23:27 |
言語 | C++11 (gcc 11.4.0) |
結果 |
CE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,670 bytes |
コンパイル時間 | 654 ms |
コンパイル使用メモリ | 64,248 KB |
最終ジャッジ日時 | 2024-11-14 18:55:30 |
合計ジャッジ時間 | 1,310 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
main.cpp: In function ‘std::vector<int> divis_list(unsigned int)’: main.cpp:12:18: error: ‘sqrt’ was not declared in this scope; did you mean ‘rt’? 12 | int rt = int(sqrt((double)num)); | ^~~~ | rt
ソースコード
#include <iostream> #include <vector> #include <set> #include <algorithm> #include <cstring> using namespace std; #define REP(i, n) for(int(i)=0;(i)<(n);++(i)) void rc(int v,int mn,int mx){if(v<mn||mx<v){cerr<<"error"<<endl;}} vector<int> divis_list(unsigned int num){ vector<int> divis_list; int rt = int(sqrt((double)num)); for(int i = 1; i <= rt; i++){ if(num % i == 0){ divis_list.push_back(i); if(num / i != i) divis_list.push_back(num / i); } } return divis_list; } const int MAX = 10000; int N, a[MAX+1]; vector<int> divs[MAX+1]; struct comp{ bool operator()(int i, int j){ return (a[i]!=a[j]) ? a[i]<a[j] : i<j; } }; set<int, comp> divsgrp[MAX+1]; int main(){ do { cin.tie(0); ios_base::sync_with_stdio(false); } while(0); cin >> N; rc(N,1,10000); REP(i,N){ cin >> a[i]; rc(a[i],1,10000); divs[i] = divis_list(a[i]); if(i > 0) for(auto &d : divs[i]) divsgrp[d].insert(i); } vector<int> result; int prev = 0; result.push_back(a[prev]); REP(i,N-1){ int minval = 0, minidx = -1; for(auto &d : divs[prev]){ if(divsgrp[d].empty()) continue; auto j = *divsgrp[d].begin(); int cm = a[j] / d; if(minidx < 0 || minval > cm || (minval == cm && a[minidx] > a[j])){ minval = cm, minidx = j; } } prev = minidx; result.push_back(a[prev]); for(auto &d : divs[prev]) divsgrp[d].erase(prev); } REP(i,N) cout << result[i] << (i==N-1?"\n":" "); return 0; }