結果

問題 No.390 最長の数列
ユーザー vjudge1
提出日時 2025-04-18 17:34:58
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 769 bytes
コンパイル時間 1,066 ms
コンパイル使用メモリ 102,176 KB
実行使用メモリ 15,316 KB
最終ジャッジ日時 2025-04-18 17:35:06
合計ジャッジ時間 7,961 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 4 WA * 4 TLE * 1 -- * 6
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:12:16: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   12 |     int n;scanf("%d",&n);
      |           ~~~~~^~~~~~~~~
main.cpp:16:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   16 |         scanf("%d",&a[i]);
      |         ~~~~~^~~~~~~~~~~~

ソースコード

diff #

#include<algorithm>
#include<iostream>
#include<cstdio>
#include<random>
#include<ctime>
#include<queue>
using namespace std;
const int MAXN=100010;
int a[MAXN],dp[1000010];
int main()
{
    int n;scanf("%d",&n);
    int mx=-1;
    for(int i=1;i<=n;++i)
    {
        scanf("%d",&a[i]);
        mx=-1;mx=max(mx,a[i]);
    }
    if(mx*n<=100000000)
    {
        sort(a+1,a+n+1);
        for(int i=1;i<=n;++i)dp[a[i]]=1;
        for(int i=1;i<=n;++i)for(int j=1;j<a[i];++j)if(a[i]%j==0)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;
    }
    else
    {
        default_random_engine e;
        uniform_int_distribution<int>u(1,n);
        e.seed(time(0));
        cout<<u(e);
    }
     
    return 0;
}
0