結果
問題 | No.74 貯金箱の退屈 |
ユーザー |
|
提出日時 | 2022-05-03 13:11:08 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 38 ms / 5,000 ms |
コード長 | 756 bytes |
コンパイル時間 | 4,201 ms |
コンパイル使用メモリ | 254,800 KB |
最終ジャッジ日時 | 2025-01-29 02:05:23 |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 30 |
ソースコード
#include<bits/stdc++.h>using namespace std;#include<atcoder/all>using namespace atcoder;using ll = long long;int n;vector<int> D,W;void solve(){vector<int> jiko(n);dsu d(n);for(int i = 0;i<n;i++){int l = (i+n*1000-D[i])%n;int r = (i+D[i])%n;if(r<l)swap(l,r);d.merge(l,r);if(l==r)jiko[l] = 1;}auto vv = d.groups();for(auto &v:vv){bool self = false;int zero_cnt = 0;for(auto &i:v){if(W[i]==0)zero_cnt++;if(jiko[i])self=true;}if(zero_cnt%2==0||self);else{cout<<"No"<<endl;return;}}cout<<"Yes"<<endl;}signed main(){cin.tie(nullptr);ios::sync_with_stdio(false);cin >> n;D = vector<int>(n);W = vector<int>(n);for(auto &i:D)cin >> i;for(auto &i:W)cin >> i;solve();}