結果
問題 | No.2860 Heal Slimes |
ユーザー | 沙耶花 |
提出日時 | 2024-08-25 15:17:48 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 108 ms / 2,000 ms |
コード長 | 1,192 bytes |
コンパイル時間 | 4,626 ms |
コンパイル使用メモリ | 269,668 KB |
実行使用メモリ | 7,148 KB |
最終ジャッジ日時 | 2024-08-25 15:18:01 |
合計ジャッジ時間 | 11,667 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 60 |
ソースコード
#include <stdio.h> #include <bits/stdc++.h> #include <atcoder/all> using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 1000000000000000001 int main(){ int _t; cin>>_t; rep(_,_t){ long long N,K,X; cin>>N>>K>>X; vector<long long> h(N); rep(i,N)cin>>h[i]; vector<long long> d(1,h[0]); rep(i,N-1){ d.push_back(h[i+1]-h[i]); } d.push_back(-h[N-1]); { set<long long> ss; for(int i=1;i<N;i++){ if(d[i]%X!=0){ ss.insert(0); ss.insert(1); break; } } if(ss.size()>=2){ cout<<"No"<<endl; continue; } } bool f= true; rep(i,K){ bool F0 = false,F1 = false; long long sum = 0; for(int j=i;j<=N;j+=K){ if(j==0){ continue; } if(j==N){ continue; } if(d[j]==0)continue; if(d[j]>0){ if(i==0){ d[j] = 0; } else{ f = false; break; } } else{ if(j+K>N){ f= false; break; } else{ d[j+K] += d[j]; d[j] = 0; } } } } if(f)cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }