結果

問題 No.1884 Sequence
ユーザー mnm
提出日時 2022-06-14 18:00:09
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
RE  
実行時間 -
コード長 1,217 bytes
コンパイル時間 748 ms
コンパイル使用メモリ 82,656 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2024-10-02 14:59:40
合計ジャッジ時間 7,870 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 25 WA * 5 RE * 10
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
#include <tuple>
#include <bitset>

#define rep(i,n) for(i=0; i<n; ++i)
#define in(a) cin >> a
#define out(a,b) cout << a << b
using namespace std;
using lint = long long;

int main(void){
    lint i, j;
    lint p, n, m;
    in(n);
    vector<lint> a(n);
    rep(i,n)    in(a[i]);
    sort(a.begin(),a.end());
    vector<lint> dis(n-1);
    rep(i,n-1){
        if(a[i]>0&&a[i+1]>0)    dis[i]=a[i+1]-a[i];
        else    dis[i]=0;
    }
    sort(dis.begin(),dis.end());
    auto cur = lower_bound(dis.begin(),dis.end(),1);
    bool f=false;
    while(true){
        if(*cur==1||cur==dis.end()){
            f=true; break;
        }
        lint rem;
        auto it=cur+1;
        for(; it!=dis.end(); ++it) {
            rem=*it%*cur;
            if(rem!=0)  break;
        }
        if(it==dis.end()){
            f=true; break;
        }
        if(cur==dis.begin()){
            f=false; break;
        }
        cur--;
        *cur=rem;
    }
    if(f){
        auto mini=lower_bound(a.begin(),a.end(),1);
        if((a[n-1]-*mini)/ *cur>n-1)   f=false;
    }
    f? out("Yes",endl): out("No",endl);

    return 0;
}
0