#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pii; int main(){ ios_base::sync_with_stdio(0); int n, m; cin >> n >> m; ll a,b; vector<vector<ll>> v(2); for(int i = 1; i <= n; ++i){ for(int j = 0; j <= (n - i); ++j){ a = 0; for(ll k = j; k <= j + i - 1; ++k){a += (1ll << k);} v[0].emplace_back(a); } } ll x,y; vector<pii> kr(m); for(int i = 0; i < m; ++i){ cin >> kr[i].first >> kr[i].second; } bool p = 1; for(int i = m - 1; ~i; --i){ a = kr[i].first; b = kr[i].second; v[p].clear(); for(int j = 0; j < (int)v[p ^ 1].size(); ++j){ x = v[p ^ 1][j] & (1ll << (a - 1)); y = v[p ^ 1][j] & (1ll << (b - 1)); if((x && y) || (!x && !y)) v[p].emplace_back(v[p ^ 1][j]); if(!x && y){ v[p].emplace_back(v[p ^ 1][j]); v[p].emplace_back(v[p ^ 1][j] - (1ll << (b - 1)) + (1ll << (a - 1))); } } p ^= 1; } vector<int> wyn(n + 1); p ^= 1; for(int i = 0; i < (int)v[p].size(); ++i){ wyn[__builtin_popcountll(v[p][i])]^=1; } for(int i = 1; i <= n; ++i) cout << wyn[i] << " "; cout << "\n"; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<ll,ll> pii; int main(){ ios_base::sync_with_stdio(0); int n, m; cin >> n >> m; ll a,b; vector<vector<ll>> v(2); for(int i = 1; i <= n; ++i){ for(int j = 0; j <= (n - i); ++j){ a = 0; for(ll k = j; k <= j + i - 1; ++k){a += (1ll << k);} v[0].emplace_back(a); } } ll x,y; vector<pii> kr(m); for(int i = 0; i < m; ++i){ cin >> kr[i].first >> kr[i].second; } bool p = 1; for(int i = m - 1; ~i; --i){ a = kr[i].first; b = kr[i].second; v[p].clear(); for(int j = 0; j < (int)v[p ^ 1].size(); ++j){ x = v[p ^ 1][j] & (1ll << (a - 1)); y = v[p ^ 1][j] & (1ll << (b - 1)); if((x && y) || (!x && !y)) v[p].emplace_back(v[p ^ 1][j]); if(!x && y){ v[p].emplace_back(v[p ^ 1][j]); v[p].emplace_back(v[p ^ 1][j] - (1ll << (b - 1)) + (1ll << (a - 1))); } } p ^= 1; } vector<int> wyn(n + 1); p ^= 1; for(int i = 0; i < (int)v[p].size(); ++i){ wyn[__builtin_popcountll(v[p][i])]^=1; } for(int i = 1; i <= n; ++i) cout << wyn[i] << " "; cout << "\n"; } |