結果
問題 |
No.2218 Multiple LIS
|
ユーザー |
![]() |
提出日時 | 2023-08-29 10:59:51 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 312 ms / 3,000 ms |
コード長 | 638 bytes |
コンパイル時間 | 2,108 ms |
コンパイル使用メモリ | 197,488 KB |
最終ジャッジ日時 | 2025-02-16 15:30:09 |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 39 |
ソースコード
#include<bits/stdc++.h> using namespace std; const int MAXN=1e6+100,mod=1e9+7; int n; int a[MAXN]; struct cmp{ bool operator()(int a, int b) const { return a > b; } }; set<int, cmp> p; int dp[MAXN]; int main () { ios::sync_with_stdio(0); cin.tie(0); cin >> n; dp[0]=1; for (int i=1; i<=n; i++) { cin >> a[i]; p.clear(); for (int j=1; j*j<=a[i]; j++){ if (a[i]%j==0) { p.insert(j); p.insert(a[i]/j); } } for (int j : p) { dp[a[i]]=max(dp[a[i]],dp[j]+1); } } int ans=0; for (int i=1; i<=n; i++) { ans=max(ans,dp[a[i]]); } cout << ans; return 0; }