#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
binary.cpp:4: warning: ignoring '#pragma loop ' [-Wunknown-pragmas]
4 | #pragma loop-opt(on)
|
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
87 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
32 ms |
300 KB |
Output is correct |
2 |
Correct |
71 ms |
288 KB |
Output is correct |
3 |
Correct |
64 ms |
204 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
763 ms |
292 KB |
Output is correct |
2 |
Correct |
835 ms |
324 KB |
Output is correct |
3 |
Correct |
801 ms |
324 KB |
Output is correct |