#include <bits/stdc++.h>
using namespace std;
int k;
int next = 63;
vector<int> adj[205];
int main() {
scanf("%d", &k);
puts("100");
for(int i = 1; i < 30; i++) {
int a1 = (i + 1) << 1 | 0;
int a2 = (i + 1) << 1 | 1;
adj[a1].push_back(a1 - 1);
adj[a1].push_back(a1 - 2);
adj[a2].push_back(a1 - 1);
adj[a2].push_back(a1 - 2);
}
adj[2].push_back(100);
adj[3].push_back(100);
int nx_node = 63;
vector<int> nodes;
for(int i = 0; i < 30; i++) {
if(k & (1 << i)) {
nodes.push_back((i + 1) << 1 | 0);
}
}
while(nodes.size() > 2) {
int a = nodes.back(); nodes.pop_back();
int b = nodes.back(); nodes.pop_back();
adj[nx_node].push_back(a);
adj[nx_node].push_back(b);
nodes.push_back(nx_node);
nx_node++;
}
adj[1] = nodes;
#ifdef LOCAL
for(int i = 1; i <= 100; i++) {
for(int j : adj[i])
printf("%d %d\n", i, j);
}
return 0;
#endif
for(int i = 1; i <= 100; i++) {
for(int j = 0; j < 2; j++) {
if(j < (int) adj[i].size()) {
printf("%d ", adj[i][j]);
} else {
printf("-1 ");
}
}
puts("");
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #include <bits/stdc++.h> using namespace std; int k; int next = 63; vector<int> adj[205]; int main() { scanf("%d", &k); puts("100"); for(int i = 1; i < 30; i++) { int a1 = (i + 1) << 1 | 0; int a2 = (i + 1) << 1 | 1; adj[a1].push_back(a1 - 1); adj[a1].push_back(a1 - 2); adj[a2].push_back(a1 - 1); adj[a2].push_back(a1 - 2); } adj[2].push_back(100); adj[3].push_back(100); int nx_node = 63; vector<int> nodes; for(int i = 0; i < 30; i++) { if(k & (1 << i)) { nodes.push_back((i + 1) << 1 | 0); } } while(nodes.size() > 2) { int a = nodes.back(); nodes.pop_back(); int b = nodes.back(); nodes.pop_back(); adj[nx_node].push_back(a); adj[nx_node].push_back(b); nodes.push_back(nx_node); nx_node++; } adj[1] = nodes; #ifdef LOCAL for(int i = 1; i <= 100; i++) { for(int j : adj[i]) printf("%d %d\n", i, j); } return 0; #endif for(int i = 1; i <= 100; i++) { for(int j = 0; j < 2; j++) { if(j < (int) adj[i].size()) { printf("%d ", adj[i][j]); } else { printf("-1 "); } } puts(""); } } |
English