Advertisement
NikolayChukanov

lec-B[18]

Mar 27th, 2023 (edited)
722
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define all(x) x.begin(), x.end()
  6.  
  7. int mex(vector<int> a) {
  8.     int n = a.size();
  9.     sort(all(a));
  10.     if (a[0] > 0) {
  11.         return 0;
  12.     }
  13.     for (int i = 0; i < n - 1; ++i){
  14.         if (a[i] + 1 < a[i + 1]){
  15.             return a[i] + 1;
  16.         }
  17.     }
  18.     return a.back() + 1;
  19. }
  20.  
  21. int main() {
  22.     int n;
  23.     cin >> n;
  24.     vector<int> sg(n+1);
  25.     sg[0] = 0;
  26.     sg[1] = 1;
  27.     sg[2] = 1;
  28.     for (int i = 3; i <= n; ++i){
  29.         vector<int> tmp;
  30.         int pos = (i + 1) / 2;
  31.         for (int j = 1; j <= pos; ++j){
  32.             int left = max(0, j - 2);
  33.             int right = i - j - 1;
  34.             tmp.push_back(sg[left] ^ sg[right]);
  35.         }
  36.         sg[i] = mex(tmp);
  37.     }
  38.     for (int i = 0; i <= n; ++i){
  39.         cout << sg[i] << endl;
  40.     }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement