結果
問題 |
No.1884 Sequence
|
ユーザー |
![]() |
提出日時 | 2022-03-25 21:53:59 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,178 bytes |
コンパイル時間 | 2,306 ms |
コンパイル使用メモリ | 199,428 KB |
最終ジャッジ日時 | 2025-01-28 12:01:12 |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 37 WA * 3 |
ソースコード
#include <bits/stdc++.h> using namespace std; long long gcd2(long long a,long long b) { if(a == 0 || b == 0) { return max(a,b); } if(a % b == 0) { return b; } else { return gcd2(b,a % b); } } int main() { int N; cin >> N; vector<long long>A(N); for(int i = 0; i < N; i++) { cin >> A[i]; } sort(A.begin(),A.end()); long long g = -1; for(int i = 0; i+1 < N; i++) { if(A[i] == 0) { continue; } if(g == -1) { g = A[i+1]-A[i]; } else if(g == 0 || A[i+1]-A[i] == 0) { if(g == 0 && A[i+1]-A[i] == 0) { continue; } cout << "No" << endl; return 0; } else { g = gcd2(g,A[i+1]-A[i]); } } if(g == 0 || g == -1) { cout << "Yes" << endl; } else { int ans = 0; for(int i = 0; i+1 < N; i++) { if(A[i] == 0) { ans--; } else { ans += (A[i+1]-A[i])/g-1; } } cout << ((ans <= 0)?"Yes":"No") << endl; } }