Submission #1101015

#TimeUsernameProblemLanguageResultExecution timeMemory
1101015Kirill22Binary Subsequences (info1cup17_binary)C++17
82 / 100
1072 ms98136 KiB
#include "bits/stdc++.h" using namespace std; const int mod = (int) 1e9 + 7; const int N = (int) 5e3; int mem[N][N]; int get(int a, int b) { if (a > b) { swap(a, b); } if (a < 0 || b < 0) { return -1; } if (a == 0 && b == 0) { return 0; } if (a == b) { return -1; } if (a < N && b < N && mem[a][b]) { return mem[a][b]; } int add = b / (a + 1); b %= (a + 1); int res = get(a, b); if (res == -1) { if (a < N && b < N) { mem[a][b] = -1; } return -1; } if (a < N && b < N) { mem[a][b] = res + add; } return res + add; } void solve() { int k; cin >> k; k++; int ans = 0; int optj = -1; for (int j = 0; j < k; j++) { int res = get(j, k - j - 1); if (res != -1) { ans++; if (optj == -1 || res < get(optj, k - optj - 1)) { optj = j; } } } // cout << optj << endl; cout << ans << '\n'; // exit(0); { int a = optj, b = k - optj - 1, x = 0; while (a + b) { if (a > b) { x ^= 1; swap(a, b); } while (b >= a + 1) { cout << x << " "; b -= a + 1; } } } cout << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; cin >> t; while (t--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...