样例输出9求助
查看原帖
样例输出9求助
726902
bcbgszyzh楼主2024/12/15 11:29
#include<bits/stdc++.h>
using namespace std;
#define MAXN 505
int n,m;
int o,p,x;
int v[MAXN][MAXN];
long long t;
long long a[MAXN][MAXN],g;
set<long long>st;
void inse(int x,int y){
    if(a[x][y]&&!v[x][y]){
        v[x][y]=1;
        st.insert(1LL*a[x][y]*MAXN*MAXN+x*MAXN+y);
    }
}
void doit(int o,int p){
    g+=a[o][p];
    inse(o-1,p);
    inse(o+1,p);
    v[o][p]=1;
    inse(o,p-1);
    inse(o,p+1);
}
int main(){
    scanf("%d%d%d%d%d",&n,&m,&x,&o,&p);
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            scanf("%lld",&a[i][j]);
        }
    }
    doit(o,p);
    while(st.size()){
        t=*st.begin();
        st.erase(t);
        if(t/MAXN/MAXN<(g-x+1)/x){
            doit((t/MAXN)%MAXN,t%MAXN%MAXN);
        }
    }
    printf("%lld",g);
    return 0;
}
2024/12/15 11:29
加载中...