This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#define wiwihorz
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma loop-opt(on)
#define rep(i, a, b) for(int i = a; i <= b; i ++)
#define INF 1e9
#define MOD 1000000007
#define eps (1e-9)
using namespace std;
namespace solver {
stack<int> ans;
int count(int a, int b) {
if(a == 0 && b == 0) return 0;
if(a == b) return -1;
if(a > b) {
int k = a / (b + 1), ans = count(a - (b + 1) * k, b);
return (ans == -1 ? -1 : ans + k);
}
else {
int k = b / (a + 1), ans = count(a, b - (a + 1) * k);
return (ans == -1 ? -1 : ans + k);
}
}
void trace(int a, int b) {
if(a == 0 && b == 0) return;
if(a > b) ans.push(0), trace(a - b - 1, b);
else ans.push(1), trace(a, b - a - 1);
}
void solve(int k) {
int id = -1, best = INF, cnt = 0;
rep(i, 0, k) {
int cur = count(i, k - i);
cnt += bool(cur != -1);
if(cur != -1 && best > cur) best = cur, id = i;
}
trace(id, k - id);
cout << cnt << "\n";
while(ans.size()) {
int cur = ans.top(); ans.pop();
cout << cur << " \n"[ans.empty()];
}
}
};
using namespace solver;
signed main() {
ios::sync_with_stdio(false), cin.tie(0);
int t; cin >> t;
while(t --) {
int k; cin >> k;
solve(k);
}
return 0;
}
Compilation message (stderr)
binary.cpp:4: warning: ignoring '#pragma loop ' [-Wunknown-pragmas]
4 | #pragma loop-opt(on)
|
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |