#55548: C語言解答


soul964420@gmail.com (ziptee)


#include<stdio.h>
int main(){
    int r,c,k,m;
    scanf("%d%d%d%d",&r,&c,&k,&m);
    int a[r][c];
    int b[r][c];
    for (int i=0;i<r;i++){
        for (int j=0;j<c;j++){
            scanf("%d",&a[i][j]);
            b[i][j]=0;
        }
    }
    int turn[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
    for (int t=0;t<m;t++){
        for (int i=0;i<r;i++){
            for (int j=0;j<c;j++){
                if (a[i][j]==-1){
                    continue;
                }
                for (int l=0;l<4;l++){
                    int nr=i+turn[l][0];
                    int nc=j+turn[l][1];
                    if ((nr>=0&&nr<r)&&(nc>=0&&nc<c)&&a[nr][nc]!=-1){
                        int sub=a[i][j]/k;
                        b[nr][nc]+=sub;
                        b[i][j]-=sub;
                    }
                }
            }
        }
        for (int i=0;i<r;i++){
            for (int j=0;j<c;j++){
                a[i][j]+=b[i][j];
                b[i][j]=0;
            }
        }
    }
    int maxval=-1;
    int minval=101;
    for (int i=0;i<r;i++){
        for (int j=0;j<c;j++){
            if (a[i][j]==-1){
                continue;
            }
            if (a[i][j]>maxval){
                maxval=a[i][j];
            }
            if (a[i][j]<minval){
                minval=a[i][j];
            }
        }
    }
    printf("%d\n%d",minval,maxval);
    return 0;
}