}
}
LL countCells(int a,int b,int numRows,int numColumns,int k)
{
int x[100],y[100],xcnt=0,ycnt=0;
if(k==0) return 0;
if(a vector
if(numRows>b&&numColumns>a)
{
v.pb(Node(b+1,a+1,numRows+1,numColumns+1));
x[xcnt++]=b+1;x[xcnt++]=numRows+1;
y[ycnt++]=a+1;y[ycnt++]=numColumns+1;
v.pb(Node(b+1,1,numRows+1,numColumns-a+1));
x[xcnt++]=b+1;x[xcnt++]=numRows+1;
y[ycnt++]=1;y[ycnt++]=numColumns-a+1;
v.pb(Node(1,a+1,numRows-b+1,numColumns+1));
x[xcnt++]=1;x[xcnt++]=numRows-b+1;
y[ycnt++]=a+1;y[ycnt++]=numColumns+1;
v.pb(Node(1,1,numRows-b+1,numColumns-a+1));
x[xcnt++]=1;x[xcnt++]=numRows-b+1;
y[ycnt++]=1;y[ycnt++]=numColumns-a+1;
}
if(numRows>a&&numColumns>b)
{
v.pb(Node(a+1,b+1,numRows+1,numColumns+1));
x[xcnt++]=a+1;x[xcnt++]=numRows+1;
y[ycnt++]=b+1;y[ycnt++]=numColumns+1;
v.pb(Node(a+1,1,numRows+1,numColumns-b+1));
x[xcnt++]=a+1;x[xcnt++]=numRows+1;
y[ycnt++]=1;y[ycnt++]=numColumns-b+1;
x[xcnt++]=1;x[xcnt++]=numRows-a+1;
y[ycnt++]=b+1;y[ycnt++]=numColumns+1;
v.pb(Node(1,1,numRows-a+1,numColumns-b+1));
x[xcnt++]=1;x[xcnt++]=numRows-a+1;
y[ycnt++]=1;y[ycnt++]=numColumns-b+1;
}
sort(x,x+xcnt);sort(y,y+ycnt);
xcnt=unique(x,x+xcnt)-x;
ycnt=unique(y,y+ycnt)-y;
int cnt[100][100];mem(cnt,0);
for(int i=0;i
int l=Bin(v[i].x1,x,xcnt),r=Bin(v[i].x2,x,xcnt)-1;
int u=Bin(v[i].y1,y,ycnt),d=Bin(v[i].y2,y,ycnt)-1;
for(int p=l;p<=r;p++) for(int j=u;j<=d;j++) cnt[p][j]++;
}
LL ans=0;
for(int i=0;i
for(int j=0;j
if(cnt[i][j]==k)
{
ans+=(LL)(x[i+1]-x[i])*(LL)(y[j+1]-y[j]);
// cout<
}
}
return ans;
}
};