Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define all(x) x.begin(), x.end()
- int mex(vector<int> a) {
- int n = a.size();
- sort(all(a));
- if (a[0] > 0) {
- return 0;
- }
- for (int i = 0; i < n - 1; ++i){
- if (a[i] + 1 < a[i + 1]){
- return a[i] + 1;
- }
- }
- return a.back() + 1;
- }
- int main() {
- int n;
- cin >> n;
- vector<int> sg(n+1);
- sg[0] = 0;
- sg[1] = 1;
- sg[2] = 1;
- for (int i = 3; i <= n; ++i){
- vector<int> tmp;
- int pos = (i + 1) / 2;
- for (int j = 1; j <= pos; ++j){
- int left = max(0, j - 2);
- int right = i - j - 1;
- tmp.push_back(sg[left] ^ sg[right]);
- }
- sg[i] = mex(tmp);
- }
- for (int i = 0; i <= n; ++i){
- cout << sg[i] << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement