int n,k,a[200],b[200],p[200][200]; minCostFlow f; { rd(n,k,a(n),b(n),p(n,n)); int s=n*n+2n; f.malloc(s+2); f.init(s+2); rep(i,n) rep(j,n) REP(m,max(a[i],b[j])) f.addEdge(i,n+j,1,(m-p[i][j])*2+1); rep(i,n) f.addEdge(s,i,a[i],0); rep(j,n) f.addEdge(n+j,s+1,b[j],0); int fres,z; f.solve(s,s+1,fres,z); rep(i,n) rep(j,n) z+=p[i][j]**2; wt(z); }