求助70分 #2 #8 #9wa
查看原帖
求助70分 #2 #8 #9wa
246331
mystic_qwq楼主2023/6/21 18:10
m,n,k,a[21][21],maxn,x,y,ans,nx=-1,ny;
#define For(i,n)for(int i=0;i<n;++i)
abs(x){return x<0?-x:x;}
min(x,y){return x<y?x:y;}
print(){
  printf("%d",ans);
  exit(0);
}
gmax(){
  maxn=0;
  For(i,m)
    For(j,n)
      if(a[j][i]>maxn)
        maxn=a[j][i],x=j,y=i;
}
/*prin(){
  printf("k=%d\n",k);
  For(i,m){
    For(j,n)
      printf("%2d",a[j][i]);
    puts("");
  }
}*/
gbest(){
  int t;
  nx==-1?t=1+y:(t=min(abs(nx-x)+abs(ny-y),ny+2+y));
  if(k>=t+1+y+1)
    k-=t+1,nx=x,ny=y,ans+=a[x][y],a[x][y]=0;
  else 
    print();
}
main(){
  scanf("%d%d%d",&m,&n,&k);
  int sum;
  For(i,m)
    For(j,n)
      scanf("%d",&a[j][i]),sum+=a[j][i];
  while(ans<sum){
    gmax();gbest();
    //prin();
  }
  print();
}

2023/6/21 18:10
加载中...