Submission #433589

# Submission time Handle Problem Language Result Execution time Memory
433589 2021-06-20T07:59:24 Z hhhhaura Binary Subsequences (info1cup17_binary) C++14
100 / 100
835 ms 340 KB
#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