蒟蒻50pts求助
查看原帖
蒟蒻50pts求助
696711
pengrongxuan楼主2023/10/11 22:28
#include<bits/stdc++.h>
#define MAXN 35
using namespace std;
struct node
{
	int x,y,s;
};//存储每一个有花生的坐标
node a[MAXN*MAXN];
int m,n,k,ans,sx,sy,fx,fy,cnt,tim,b[MAXN][MAXN];//(sx,sy)为当前所在坐标,(fx,fy)为下一个到达的坐标,tim为过去所需时间
inline int read()
{
	int f=1,k=0;
	char c=getchar();
	while(c<'0'||c>'9')
	{
		if(c=='-')
		{
	        f=-1;
		}
		c=getchar();
	}
	while(c>='0'&&c<='9')
	{
		k=(k<<1)+(k<<3)+(c^48);
		c=getchar();
	}
	return f*k;
}
bool cmp(node a,node b)
{
	return a.s>b.s;
}
int main()
{
	m=read(),n=read(),k=read();
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			b[i][j]=read();
			if(b[i][j]>0)
			{
				a[++cnt].x=i;
				a[cnt].y=j;
				a[cnt].s=b[i][j];
			}
		}
	}
	sort(a+1,a+n+1,cmp);
	sx=1,sy=a[1].y;
	k--;
	for(int i=1;i<=cnt;i++)
	{
		tim=0;
		fx=a[i].x,fy=a[i].y;
		tim=abs(fx-sx)+abs(fy-sy);
		k-=tim;
		k--;
		if(k>=fx)
		{
			ans+=b[fx][fy];
			sx=fx,sy=fy;
		}
		else
		{
			printf("%d",ans);
			return 0;
		}
	}
	printf("%d",ans);
    return 0;
}

2023/10/11 22:28
加载中...