题解
2023-03-18 17:50:21
发布于:上海
45阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y,s;
} a[100001];
int n,m,k,tot;
bool cmp(node a,node b){
return a.s>b.s;
}
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
int t;
cin>>t;
if(t>0) a[++tot].x=i,a[tot].y=j,a[tot].s=t;
}
}
sort(a+1,a+1+tot,cmp);
int ans=0,t=0;
for(int i=1;i<=tot;i++){
if(i==1) t+=a[i].x+1;
else t+=abs(a[i-1].x-a[i].x)+abs(a[i-1].y-a[i].y)+1;
if(t+a[i].x>k) break;
ans+=a[i].s;
}
cout<<ans<<endl;
return 0;
}
这里空空如也
有帮助,赞一个