結果
| 問題 | No.390 最長の数列 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2017-07-26 16:16:10 | 
| 言語 | D (dmd 2.109.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 85 ms / 5,000 ms | 
| コード長 | 472 bytes | 
| コンパイル時間 | 775 ms | 
| コンパイル使用メモリ | 107,800 KB | 
| 実行使用メモリ | 15,752 KB | 
| 最終ジャッジ日時 | 2024-06-12 21:13:45 | 
| 合計ジャッジ時間 | 2,144 ms | 
| ジャッジサーバーID (参考情報) | judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 15 | 
ソースコード
import std.algorithm, std.conv, std.range, std.stdio, std.string;
void main()
{
  auto n = readln.chomp.to!size_t;
  auto x = readln.split.to!(int[]);
  x.sort();
  auto maxX = x.back;
  auto b = new size_t[](maxX+1);
  b[] = n;
  foreach (i, xi; x) b[xi] = i;
  auto w = new int[](n);
  foreach (i, xi; x) {
    if (!w[i]) w[i] = 1;
    for (auto j = xi * 2; j <= maxX; j += xi)
      if (b[j] < n) w[b[j]] = max(w[b[j]], w[i] + 1);
  }
  writeln(w.maxElement);
}
            
            
            
        