60悬关求调
查看原帖
60悬关求调
1044049
Star_Governor楼主2024/3/5 20:10

rt

#include<bits/stdc++.h>
using namespace std;
const int maxn=36;
int n,m,t,ans,o=1,p;
struct ee{
	int x,y,num;
}b[maxn*maxn];
bool cmp(ee a,ee b){
	return a.num>b.num;
}
int mhd(ee a,ee b){
	return abs(a.x-b.x)+abs(a.y-b.y);
}
void pd(){
	sort(b+1,b+o+1,cmp);
	t-=b[1].x+1;
	if(t>b[1].x){
		ans+=b[1].num;
	}
	int p=2;
	while(t>b[p].x){
		int k=mhd(b[p-1],b[p]);
		if(t>k+b[p].x+1){
			t-=k;
			ans+=b[p].num;
			p++;
		}else{
			return;
		}
		if(p==o+1){
			return;
		}
	}	
}
int main(){
	
	scanf("%d%d%d",&n,&m,&t);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			int x;
			scanf("%d",&x);
			if(x!=0){
				b[o].num=x;
				b[o].x=i,b[o].y=j;
				o++;
			}
		}
	}
	pd();
	printf("%d",ans);
	return 0;
}/*
6 7 21
0 0 0 0 0 0 0
0 0 0 0 13 0 0
0 0 0 0 0 0 7
0 15 0 0 0 0 0
0 0 0 9 0 0 0
0 0 0 0 0 0 0
*/
2024/3/5 20:10
加载中...