RE三个点
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+5;
long long s[505][505],h,w,k,p,q,ans;
bool vis[505][505];
priority_queue<pair<long long,pair<int,int> > >Q;
void pushdown(int x,int y){
ans+=s[x][y];
s[x][y]=0;
if(s[x+1][y]&&vis[x+1][y]==0&&x<=h){
Q.push(make_pair(-s[x+1][y],make_pair(x+1,y)));
vis[x+1][y]=1;
}
if(s[x-1][y]&&vis[x-1][y]==0&&x>=1){
Q.push(make_pair(-s[x-1][y],make_pair(x-1,y)));
vis[x-1][y]=1;
}
if(s[x][y+1]&&vis[x][y+1]==0&&y<=w){
Q.push(make_pair(-s[x][y+1],make_pair(x,y+1)));
vis[x][y+1]=1;
}
if(s[x][y-1]&&vis[x][y-1]==0&&y>=1){
Q.push(make_pair(-s[x][y-1],make_pair(x,y-1)));
vis[x][y-1]=1;
}
}
int main(){
cin>>h>>w>>k>>p>>q;
for(int i=1;i<=h;i++)
for(int j=1;j<=w;j++)
scanf("%lld",&s[i][j]);
vis[p][q]=1;
pushdown(p,q);
while((double)-Q.top().first*k<((double)ans)/(double)k){
int x=Q.top().second.first,y=Q.top().second.second;
Q.pop();
pushdown(x,y);
if(Q.empty())break;
}
cout<<ans;
}