結果
| 問題 | 
                            No.390 最長の数列
                             | 
                    
| コンテスト | |
| ユーザー | 
                             Xelmeph
                         | 
                    
| 提出日時 | 2016-07-08 23:56:01 | 
| 言語 | C++11(廃止可能性あり)  (gcc 13.3.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,291 bytes | 
| コンパイル時間 | 843 ms | 
| コンパイル使用メモリ | 78,476 KB | 
| 実行使用メモリ | 13,632 KB | 
| 最終ジャッジ日時 | 2024-10-13 07:37:08 | 
| 合計ジャッジ時間 | 7,429 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge4 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 2 WA * 2 | 
| other | WA * 2 TLE * 1 -- * 12 | 
ソースコード
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <set>
#include <fstream>
#include <stdint.h>
#include <cmath>
#include <algorithm>
#include <utility>
#include <numeric>
using namespace std;
#define REP(i, n) for(int i = 0; i < n; i++)
#define RREP(i,n) for(int i = (n)-1; i >= 0; i--)
#define FOR(i, l, r) for(int i = l; i < r; i++)
#define RFOR(i, l,r) for(int i= (l)-1; i>= (r) ; i--)
constexpr int INF       = 1000000000;/* 1e+9a */
constexpr int MODULO    = 1000000007;
int max_v = 1;
vector<int> depth;
int calc(vector<int>& p, int n = 0, int dep = 1)
{
    int thi = n;
    if(depth[n] != INF)
        return depth[n];
    int t_max = dep;
    FOR(i, n+1, p.size())
    {
        if(p[i] % p[thi] == 0)
        {
            int tmp = calc(p, i, dep+1);
            t_max = t_max > tmp ? t_max : tmp;
        }
    }
    return depth[thi] = t_max;
}
int solve(vector<int>& p)
{
    calc(p);
    return *max_element(depth.begin(), depth.end());
}   
int main()
{
    ios::sync_with_stdio(false);
    int n;
    cin >> n;
    vector<int> p;
    REP(i, n)
    {
        int tmp;
        cin >> tmp;
        p.push_back(tmp);
    }
    sort(p.begin(),p.end());
    REP(i, n)
    {
        depth.push_back(INF);
    }
    cout << solve(p)  << '\n';
}
            
            
            
        
            
Xelmeph