#include #include int highbit(int n) { if (n) { int b=1; while (n>1) { n/=2; b*=2; } return b; } else { return 0; } } int min; void explore(int n, int b, int x, int y) { if (b==0) { int xy = xxy) { min = xy; } } else { int z = (n&b) ? 1 : 0; explore(n, b/2, 2*x+z, y); explore(n, b/2, x, 2*y+z); } } int a(int n) { min = INT_MAX; explore(n, highbit(n), 0, 0); return min; } int main() { for (int n=0; n<=1<<13; n++) { printf("%d %d\n", n, a(n)); fflush(stdout); } return 0; }