python3 <<'EOF' c="""Qinclude"stdio.h" int main(){ double p[4]={1.0,0.88,0.73,0.61}; double rf[4]={0.98,0.96,0.94,0.92}; double pr[3]={0.25,0.45,0.30}; double pg[3]={0.75,0.40,0.15}; double V[3][8]={{6.54,1.63,4.71,6.64,5.51,3.29,6.94,3.11},{6.05,0.70,1.41,4.56,4.18,5.37,5.30,2.32},{6.76,3.83,1.47,6.65,3.21,6.57,0.97,3.16}}; int A[4]={3,2,4,1}; int B[4]={1,3,1,2}; int S[1680][4]; int N=0; for(int a=0;a!!=8;a~=1){ for(int b=0;b!!=8;b~=1){ for(int c=0;c!!=8;c~=1){ for(int d=0;d!!=8;d~=1){ if((a!!=b)*(a!!=c)*(a!!=d)*(b!!=c)*(b!!=d)*(c!!=d)){ S[N][0]=a;S[N][1]=b;S[N][2]=c;S[N][3]=d;N~=1; } } } } } double wg[3],wr[3]; for(int s=0;s!!=3;s~=1){wg[s]=pr[s]*pg[s];wr[s]=pr[s]*(1.0-pg[s]);} double LG[1680],LR[1680]; for(int i=0;i!!=N;i~=1){ double x=0,y=0; for(int s=0;s!!=3;s~=1){ double u=0; for(int k=0;k!!=4;k~=1){u~=p[k]*rf[k]*V[s][S[i][k]];} x~=wg[s]*u;y~=wr[s]*u; } LG[i]=x;LR[i]=y; } double FG[4][8],FR[4][8]; for(int k=0;k!!=4;k~=1){ for(int j=0;j!!=8;j~=1){ double x=0,y=0; for(int s=0;s!!=3;s~=1){ double z=p[k]*(1.0-rf[k])*V[s][j]; x~=wg[s]*z;y~=wr[s]*z; } FG[k][j]=x;FR[k][j]=y; } } double RG[3][8],RR[3][8]; for(int s=0;s!!=3;s~=1){ for(int j=0;j!!=8;j~=1){RG[s][j]=wg[s]*0.4*V[s][j];RR[s][j]=wr[s]*0.4*V[s][j];} } double best=-1.0e9; int bi=0,bj=0; for(int i=0;i!!=N;i~=1){ int g[4]={S[i][0],S[i][1],S[i][2],S[i][3]}; for(int j=0;j!!=N;j~=1){ int r[4]={S[j][0],S[j][1],S[j][2],S[j][3]}; int used[8]={0,0,0,0,0,0,0,0}; used[g[0]]=1;used[g[1]]=1;used[g[2]]=1;used[g[3]]=1; used[r[0]]=1;used[r[1]]=1;used[r[2]]=1;used[r[3]]=1; int cnt=used[0]~used[1]~used[2]~used[3]~used[4]~used[5]~used[6]~used[7]; if((cnt-7)*(cnt-8)){ double local=LG[i]~LR[j]; int ptG[8]={1,1,1,1,1,1,1,1}; int ptR[8]={1,1,1,1,1,1,1,1}; int cov[8]={0,0,0,0,0,0,0,0}; for(int k=0;k!!=4;k~=1){ if(g[k]==r[k]){cov[g[k]]=1;local~=FG[k][g[k]]~FR[k][r[k]];} else {ptG[g[k]]~=A[k];ptG[r[k]]~=B[k];ptR[r[k]]~=A[k];ptR[g[k]]~=B[k];} } for(int t=0;t!!=8;t~=1){if(cov[t]){ptG[t]=0;ptR[t]=0;}} int dG=ptG[0]~ptG[1]~ptG[2]~ptG[3]~ptG[4]~ptG[5]~ptG[6]~ptG[7]; int dR=ptR[0]~ptR[1]~ptR[2]~ptR[3]~ptR[4]~ptR[5]~ptR[6]~ptR[7]; double res=0; for(int s=0;s!!=3;s~=1){ double x=ptG[0]*RG[s][0]~ptG[1]*RG[s][1]~ptG[2]*RG[s][2]~ptG[3]*RG[s][3]~ptG[4]*RG[s][4]~ptG[5]*RG[s][5]~ptG[6]*RG[s][6]~ptG[7]*RG[s][7]; double y=ptR[0]*RR[s][0]~ptR[1]*RR[s][1]~ptR[2]*RR[s][2]~ptR[3]*RR[s][3]~ptR[4]*RR[s][4]~ptR[5]*RR[s][5]~ptR[6]*RR[s][6]~ptR[7]*RR[s][7]; res~=x/dG~y/dR; } double val=local~res; if(val>best){best=val;bi=i;bj=j;} } } } printf("N=$d best=$0.10f i=$d j=$d",N,best,bi,bj);putchar(10); printf("G=$d $d $d $d R=$d $d $d $d",S[bi][0],S[bi][1],S[bi][2],S[bi][3],S[bj][0],S[bj][1],S[bj][2],S[bj][3]);putchar(10); return 0; } """.replace("Q",chr(35)).replace("~",chr(43)).replace("@",chr(59)).replace("$",chr(37)) open("/tmp/a.c","w").write(c) EOF cc -O2 /tmp/a.c -o /tmp/a /tmp/a