Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- using ll = long long;
- namespace Algo1_22{
- vector < ll > d;
- ll cnt;
- void f(ll n){
- if (n < 0) return;
- if (n == 0){
- for (ll i=1; i<cnt; i++){
- cout << d[i] << " \n"[i==cnt-1];
- }
- return;
- }else{
- for (ll i=d[cnt-1]; i>0; i--){
- d[cnt++] = i;
- f(n-i);
- cnt --;
- }
- }
- }
- void run(){
- ll n;
- cin >> n;
- d.resize(n+2);
- d[0] = n;
- cnt = 1;
- f(n);
- }
- }
- namespace Algo1_19{
- void run(){
- vector < vector < vector < ll > > > res;
- ll n;
- cin >> n;
- res.push_back({{1}});
- for (ll i=2; i<=n; i++){
- vector < vector < vector < ll > > > tmp;
- for (ll j=0; j<res.size(); j++){
- if (j&1){
- res[j].push_back({i});
- tmp.push_back(res[j]);
- res[j].pop_back();
- for (ll k=res[j].size()-1; k>-1; k--){
- res[j][k].push_back(i);
- tmp.push_back(res[j]);
- res[j][k].pop_back();
- }
- }else{
- for (ll k=0; k<res[j].size(); k++){
- res[j][k].push_back(i);
- tmp.push_back(res[j]);
- res[j][k].pop_back();
- }
- res[j].push_back({i});
- tmp.push_back(res[j]);
- res[j].pop_back();
- }
- }
- res = tmp;
- }
- for (vector<vector<ll>> &i: res){
- for (vector<ll> &j: i){
- cout << '{';
- for (ll &k: j){
- cout << k << " }"[k==j.back()];
- }
- }
- cout << '\n';
- }
- }
- }
- int main(){
- Algo1_22::run();
- Algo1_19::run();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment