結果
問題 | No.1584 Stones around Circle Pond |
ユーザー | chocorusk |
提出日時 | 2021-07-02 22:05:37 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 3 ms / 2,000 ms |
コード長 | 1,763 bytes |
コンパイル時間 | 3,628 ms |
コンパイル使用メモリ | 180,828 KB |
最終ジャッジ日時 | 2025-01-22 16:02:17 |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 58 |
ソースコード
#include <cstdio> #include <cstring> #include <iostream> #include <string> #include <cmath> #include <bitset> #include <vector> #include <map> #include <set> #include <queue> #include <deque> #include <algorithm> #include <complex> #include <unordered_map> #include <unordered_set> #include <random> #include <cassert> #include <fstream> #include <utility> #include <functional> #include <time.h> #include <stack> #include <array> #include <list> #include <atcoder/all> #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair<int, int> P; int main() { int n; ll l; cin>>n>>l; ll d[101]; for(int i=0; i<n; i++){ cin>>d[i]; } ll b[202]; ll s=0; for(int i=0; i<2*n; i++){ cin>>b[i]; s+=b[i]; } if(s%(n*l)!=0){ cout<<"No"<<endl; return 0; } ll c=s/(n*l); ll x[202]; for(int i=0; i<2*n; i++){ ll x1=d[i%n]; if(i>=n) x1+=l; ll x2=d[(i+1)%n]; if(n<=i+1 && i+1<2*n) x2+=l; else if(i+1>=2*n) x2+=2*l; x[i]=x2-x1; } ll y[202]; for(int i=0; i<2*n; i++){ y[i]=(b[(i+1)%(2*n)]-b[i]); } for(int i=0; i<2*n; i++){ if(y[i]%x[i]!=0){ cout<<"No"<<endl; return 0; } y[i]/=x[i]; } ll z[202]; for(int i=0; i<2*n; i++){ z[i]=y[(i+1)%(2*n)]-y[i]; } for(int i=0; i<n; i++){ if(z[i]+z[i+n]!=0 || z[i]%2!=0){ cout<<"No"<<endl; return 0; } z[i]/=2; } ll t=0; for(int i=0; i<n; i++){ t+=abs(z[i]); } if(t<=c && (c-t)%2==0){ cout<<"Yes"<<endl; }else{ cout<<"No"<<endl; } return 0; }