RT。
WA6个1h都调不出。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int ll
const int N=507;
const int dx[4]={0,1,0,-1};
const int dy[4]={1,0,-1,0};
int n,m,x,y,p;
__int128 res=0;
bool vis[N][N];
int a[N][N];
inline bool check(int xx,int yy){
if(xx<1||yy<1||xx>n||yy>m||vis[xx][yy])return 1;
return 0;
}
struct node{
int first,second,val;
inline bool operator < (const node &X)const{return val>X.val;}
};
inline void print(__int128 x){
if(x>9)print(x/10);
putchar(x%10+'0');
}
signed main(){
cin>>n>>m>>p>>x>>y;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)cin>>a[i][j];
priority_queue<node>q;
while(!q.empty())q.pop();
res=a[x][y];
vis[x][y]=1;
a[x][y]=0;
q.push({x,y,a[x][y]});
// for(int i=0;i<4;i++){
// int nx=x+dx[i],ny=y+dy[i];
// if(check(nx,ny))continue;
// q.push({nx,ny,a[nx][ny]});
// }
while(!q.empty()){
int ax=q.top().first,ay=q.top().second;q.pop();
// if(vis[ax][ay])continue;
if(res>__int128(a[ax][ay]*p)){
res+=a[ax][ay];
a[ax][ay]=0;
vis[ax][ay]=1;
}else continue;
for(int i=0;i<4;i++){
int nx=ax+dx[i],ny=ay+dy[i];
if(vis[nx][ny]){
continue;
}
if(nx<1||ny<1||nx>n||ny>m)continue;
q.push({nx,ny,a[nx][ny]});
}
}
print(res);
}