struct{int c,p;}f[404][404]; int n,b,x[400],y[400],p[400],z; { rd(n,b,(x,y,p)(n)); int mx=coordcomp(n,x); int my=coordcomp(n,y); rep(i,n)f[y[i]+1][x[i]+1]={1,p[i]}; rep(by,1,my+1){ int kp=0,kc=0; rep(ix,1,mx+1){ f[by][ix].p=(kp+=f[by][ix].p)+f[by-1][ix].p; f[by][ix].c=(kc+=f[by][ix].c)+f[by-1][ix].c; } rep(ay,by){ int ax=0,bx=0,ap=0,bp=0; while(bx<=mx){ if(bp-ap<=b){ z>?=f[by][bx].c-f[by][ax].c-f[ay][bx].c+f[ay][ax].c; ++bx; bp=f[by][bx].p-f[ay][bx].p; }else{ ++ax; ap=f[by][ax].p-f[ay][ax].p; } } } } wt(z); }