結果
問題 |
No.2218 Multiple LIS
|
ユーザー |
![]() |
提出日時 | 2023-08-29 11:53:09 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 657 bytes |
コンパイル時間 | 1,757 ms |
コンパイル使用メモリ | 170,424 KB |
実行使用メモリ | 35,540 KB |
最終ジャッジ日時 | 2024-12-30 23:21:47 |
合計ジャッジ時間 | 40,337 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 4 WA * 26 TLE * 9 |
ソースコード
#include<bits/stdc++.h> using namespace std; const int kMaxN=1e5+3; long long n,a[kMaxN],d[kMaxN],d1[kMaxN],ans,h[kMaxN],f[kMaxN]; bool w[kMaxN]; vector<long long> s[kMaxN]; void F(int x){ for(int i=1;i*i<=x;i++){ if(x%i==0){ s[x].push_back(i); if(i*i!=x){ s[x].push_back(x/i); } } } } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; d1[a[i]]++,d[a[i]]=1,h[a[i]]=i; F(a[i]); } for(int i=1;i<=n;i++){ for(int j:s[a[i]]){ if(h[j]!=0&&h[j]<i){ d[a[i]]=max(d[a[i]],d[j]+(w[a[i]]?0:d1[a[i]])); } } w[a[i]]=1; ans=max(ans,d[a[i]]); } cout<<ans; return 0; }