結果
問題 | No.390 最長の数列 |
ユーザー |
![]() |
提出日時 | 2016-07-09 09:58:07 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 108 ms / 5,000 ms |
コード長 | 827 bytes |
コンパイル時間 | 871 ms |
コンパイル使用メモリ | 84,772 KB |
実行使用メモリ | 15,768 KB |
最終ジャッジ日時 | 2024-10-02 10:40:25 |
合計ジャッジ時間 | 2,352 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 15 |
ソースコード
#include<iostream> #include<cmath> #include<vector> #include<set> #include<algorithm> int main() { int n; const int MAX = 1000000; std::vector<int> v(MAX + 1), v2(MAX + 1); std::set<int> s; std::cin >> n; for (int i = 0; i < n; i++) { int value; std::cin >> value; v[value]++; s.insert(value); } int max = *std::max_element(s.begin(), s.end()), min = *std::min_element(s.begin(), s.end()); for (int val : s) { //std::cout << val << std::endl; v2[val] = std::max(1, v2[val]); for (int i = 2; val * i <= max; i++) { if (v[val * i] == 1) { v2[val * i] = std::max(v2[val] + 1, v2[val * i]); } } } //for (int i = 0; i <= max; i++) { // if (v2[i] > 0) { // std::cout << v2[i] << std::endl; // } //} std::cout << *std::max_element(v2.begin(), v2.end()) << std::endl; return 0; }