调了0.5h/kk
#include<bits/stdc++.h>
using namespace std;
template<typename T>
inline void read(T &x)
{
x=0;char ch=getchar();bool f=0;
while(ch<'0'||ch>'9'){if(ch=='-')f=1;ch=getchar();}
while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
if(f)x=-x;
}
template<typename T,typename ...Args>
inline void read(T &tmp,Args &...tmps){read(tmp);read(tmps...);}
const int dx[]={1,0,-1,0},dy[]={0,1,0,-1};
int h,w,y,mn,ans,qwq,ct[1005][1005],a[1005][1005],dp[1005][1005],cnt[100005],lr[1005][1005];
void update(int x,int y)
{
if(ct[x][y]==qwq)return;
ct[x][y]++;
mn=0x3f3f3f3f;
for(int i=0;i<4;i++)if(lr[x+dx[i]][y+dy[i]]<=lr[x][y])mn=min(mn,dp[x+dx[i]][y+dy[i]]);
mn=max(mn,a[x][y]);
dp[x][y]=mn;
if(qwq==20&&mn<=(::y))cnt[mn]++;
}
int main()
{
read(h,w,y);
for(int i=1;i<=h;i++)for(int j=1;j<=w;j++)
{
read(a[i][j]);
lr[i][j]=max(min(i,h-i+1),min(j,w-j+1));
}
for(qwq=1;qwq<=20;qwq++)for(int i=1;i<=min(h,w);i++)
{
for(int j=1;j<=h;j++){update(j,i);update(j,w-i+1);}
for(int j=1;j<=w;j++){update(i,j);update(h-i+1,j);}
}
for(int i=1;i<=y;i++)
{
ans+=cnt[i];
cout<<h*w-ans<<'\n';
}
}