結果
問題 | No.74 貯金箱の退屈 |
ユーザー |
|
提出日時 | 2015-01-17 11:57:44 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,464 bytes |
コンパイル時間 | 888 ms |
コンパイル使用メモリ | 96,872 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-06-22 16:19:44 |
合計ジャッジ時間 | 2,068 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 30 |
ソースコード
#include <cstdio>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <algorithm>#include <cmath>#include <string>#include <vector>#include <list>#include <queue>#include <stack>#include <set>#include <map>#include <bitset>#include <numeric>#include <limits>#include <climits>#include <cfloat>#include <functional>using namespace std;int elementaryMatrix(vector<bitset<128> >& mat){const int n = mat.size();const int m = mat[0].size();int y = 0;int x = 0;while(y < n && x < m){int tmp = y;while(tmp < n && !mat[tmp][x])++ tmp;if(tmp < n){swap(mat[y], mat[tmp]);for(int i=y+1; i<n; ++i){if(mat[i][x])mat[i] ^= mat[y];}++ y;}++ x;}mat.resize(y);return y;}int main(){int n;cin >> n;vector<int> d(n);for(int i=0; i<n; ++i)cin >> d[i];vector<int> w(n);for(int i=0; i<n; ++i)cin >> w[i];vector<bitset<128> > mat(n);for(int i=0; i<n; ++i){int a = ((i - d[i]) % n + n) % n;int b = (i + d[i]) % n;mat[a][i] = true;mat[b][i] = true;mat[i][n] = w[i] == 0;}elementaryMatrix(mat);if(mat.back().count() == 1 && mat.back()[n])cout << "No" << endl;elsecout << "Yes" << endl;return 0;}