#include #include using namespace std; vector ord; long long z2n(long long n) { if (n>=0) { return 2*n; } else { return -1-2*n; } } int main() { ord.resize(1); long long v = 0; long long z = 0; for (long long n = 0; z<10000; n++) { if (v==0) { cout << ++z << ' ' << n << endl; } long long m = z2n(v); while (m >= ord.size()) { ord.resize(2*ord.size()); } long long k = ++ord[m]; long long e = v>0 ? 1 : 0; if (k%2==e%2) { v += k/2; } else { v -= k/2; } } return 0; }