#include <iostream>
//#include <chrono>
//using namespace std::chrono;
using namespace std;
int main()
{
long long k;
int graf[100][2], n, g;
// auto start = high_resolution_clock::now();
cin >> k;
if (k == 1) {
cout << "2" << endl;
cout << "2 -1" << endl;
cout << "-1 -1" << endl;
return 0;
}
g = 1;
while (k > 1) {
graf[g][0] = g + 1; graf[g][1] = g + 2;
graf[++g][0] = (k % 2 == 0) ? -1 : 0; graf[g][1] = g + 1;
g++; k = k / 2;
}
graf[g][0] = g + 1; graf[g][1] = -1;
n = g + 1;
cout << n << endl;
for (g = 1; g < n; g++) {
cout << (graf[g][0] != 0 ? graf[g][0] : n) << " ";
cout << (graf[g][1] != 0 ? graf[g][1] : n) << endl;
}
cout << "-1 -1" << endl;
// auto stop = high_resolution_clock::now();
// auto duration = duration_cast<microseconds>(stop - start);
// cout << endl << "Timer=" << duration.count() << endl;
return 0;
}
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 | #include <iostream> //#include <chrono> //using namespace std::chrono; using namespace std; int main() { long long k; int graf[100][2], n, g; // auto start = high_resolution_clock::now(); cin >> k; if (k == 1) { cout << "2" << endl; cout << "2 -1" << endl; cout << "-1 -1" << endl; return 0; } g = 1; while (k > 1) { graf[g][0] = g + 1; graf[g][1] = g + 2; graf[++g][0] = (k % 2 == 0) ? -1 : 0; graf[g][1] = g + 1; g++; k = k / 2; } graf[g][0] = g + 1; graf[g][1] = -1; n = g + 1; cout << n << endl; for (g = 1; g < n; g++) { cout << (graf[g][0] != 0 ? graf[g][0] : n) << " "; cout << (graf[g][1] != 0 ? graf[g][1] : n) << endl; } cout << "-1 -1" << endl; // auto stop = high_resolution_clock::now(); // auto duration = duration_cast<microseconds>(stop - start); // cout << endl << "Timer=" << duration.count() << endl; return 0; } |
English