70分求助
查看原帖
70分求助
1081537
wangzihan__sb楼主2024/9/16 22:06
#include<bits/stdc++.h>
using namespace std;
int m,n,w,mp[25][25],cnt=0,ans=0;
struct node {
	int sum;
	int x,y;
} k[10000];
bool cmp(node n1,node n2) {
	return n1.sum>n2.sum;
}
int main() {
	ios::sync_with_stdio(0);
	cin>>m>>n>>w;
	for (int i=1; i<=m; i++) {
		for (int j=1; j<=n; j++) {
			cin>>mp[i][j];
			k[++cnt].sum=mp[i][j];
			k[cnt].x=i,k[cnt].y=j;
		}
	}
	sort(k+1,k+n*m+1,cmp);
	int i=1,nx=0,ny=0;
	while (w--) {
		if (i==n*m+1 || ny>w-1)break;
		if (nx==0 && ny==0)nx=1,ny=k[i].y;
		else if (nx<k[i].x)nx++;
		else {
			if (nx>k[i].x)nx--;
			else {
				if (ny<k[i].y)ny++;
				else {
					if (ny>k[i].y)ny--;
					else {
						if (nx==k[i].x && ny==k[i].y) {
							ans+=k[i].sum;
							i++;
						}
					}
				}
			}
		}
	}
	cout<<ans;
	return 0;
}
2024/9/16 22:06
加载中...