直接模拟,代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int x,y,time;
cin>>x>>y>>time;
int aa[x*y],sum=0,time_z=0,x_z[x*y]={0},y_z[x*y]={0},b=0,s=0,t=0,bb=0;
for(int i=0;i<x*y;i++){
cin>>aa[i];
if(aa[i]!=0)b++;
}
while(s<b){
for(int i=0;i<x*y;i++){
for(int j=0;j<x*y;j++)
if(aa[i]>=aa[j]) t++;
if(t==x*y-s){
x_z[s]=i/y;
y_z[s]=i%y;
t=0;
break;
}
t=0;
}
s++;
}
for(int i=0;i<x*y;i++){
for(int j=i+1;j<x*y;j++){
if(aa[i]<aa[j]){
int temp=aa[i];
aa[i]=aa[j];
aa[j]=temp;
}
}
bb++;
if(bb>=b)break;
}
int xxo=-1,yyo=y_z[0];
for(int i=0;i<b;i++){
sum+=aa[i];
time_z+=abs(x_z[i]-xxo)+abs(y_z[i]-yyo);
time_z+=1;
xxo=x_z[i];
yyo=y_z[i];
if(time_z+xxo+1>time){
sum-=aa[i];
break;
}
}
cout<<sum<<endl;
return 0;}