Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- bool mark[105];
- vector<pair<int,int>> ans, best;
- int n, sz = 15;
- void solve() {
- if (ans.size() >= sz) return;
- int me = ans.back().first;
- if (me == n) {
- best = ans, sz = ans.size();
- return;
- }
- for (int i = 0; i < ans.size(); ++i) {
- int tenta = ans[i].first + me;
- if (tenta > n || mark[tenta]) continue;
- ans.push_back({tenta, ans[i].first}), mark[tenta] = 1;
- solve();
- ans.pop_back(), mark[tenta] = 0;
- }
- }
- int main() {
- int m; cin >> m >> n;
- if (m != 1) cout << '*' << endl;
- else {
- mark[1] = 1;
- ans.push_back({1, 0});
- solve();
- for (auto [x, y] : best) {
- if (y == 0) continue;
- cout << 1 << ' ' << x - y << endl;
- cout << 1 << ' ' << y << endl;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement