60求助
查看原帖
60求助
1340800
caihanang楼主2024/7/14 16:47

恳请各位大佬帮助答疑解惑(为什么过不了啊啊啊啊):

#include <bits/stdc++.h>
using namespace std;
int n,m,k,a[1000][1000],ans;
struct shift{
	int x,y,num;
}xy[10000];
bool cmp(shift a,shift b){
	return a.num>b.num;
}
int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
			if(a[i][j]){
				xy[++ans].x=i;
				xy[ans].y=j;
				xy[ans].num=a[i][j];
			}
		}
	}
	sort(xy+1,xy+n+1,cmp);
	int nx=0,ny=xy[1].y,tot=0;
	for(int i=1;i<=ans;i++){
		//cout<<xy[i].x<<" "<<xy[i].y<<" "<<xy[i].num<<endl;
		int mhd=abs(nx-xy[i].x)+abs(ny-xy[i].y);
		if(k>=mhd+1+xy[i].x){
			tot+=xy[i].num;
			nx=xy[i].x;
			ny=xy[i].y;
			k-=(mhd+1);
		}
		else break;
	}
	cout<<tot;
	return 0;
}
2024/7/14 16:47
加载中...