結果
問題 |
No.1884 Sequence
|
ユーザー |
|
提出日時 | 2024-04-16 18:00:00 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 154 ms / 2,000 ms |
コード長 | 919 bytes |
コンパイル時間 | 3,779 ms |
コンパイル使用メモリ | 253,680 KB |
最終ジャッジ日時 | 2025-02-21 02:30:17 |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 40 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using namespace std; using namespace atcoder; using ll = long long; using ld = long double; using mint = modint998244353; int main() { int N; cin >> N; vector<ll> A(N); for (int i = 0; i < N; i++) cin >> A[i]; vector<ll> C; for (int i = 0; i < N; i++) { if (A[i] != 0) C.push_back(A[i]); } int K = C.size(); if (K == 0) { cout << "Yes" << endl; return 0; } sort(C.begin(), C.end()); vector<ll> D(K - 1); for (int i = 0; i < K - 1; i++) { D[i] = C[i + 1] - C[i]; } int cnt = count(D.begin(), D.end(), 0LL); if (cnt > 0) { cout << (cnt == K - 1 ? "Yes": "No") << endl; return 0; } ll g = 0; for (int i = 0; i < K - 1; i++) { g = gcd(g, D[i]); } ll need = 0; for (int i = 0; i < K - 1; i++) { ll tmp = D[i] / g - 1; need += tmp; } cout << (need <= N - K ? "Yes": "No") << endl; return 0; }