1 条题解
-
0
C++ :
#include<cstdio> #include<algorithm> #include<cstdlib> using namespace std; const int maxn=100100; inline int max(int a,int b){return a>b?a:b;} inline int min(int a,int b){return a<b?a:b;} inline int read(){char ch=getchar(),w=1;int x=0;while(ch<'0'||ch>'9'){if(ch=='-')w=-1; ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return w*x;} inline void wr(int x){if(x<0)putchar('-'),x=-x;if(x>9)wr(x/10);putchar(x%10+'0');} inline void wrln(int x){wr(x);putchar('\n');} int v[600][600],m,n,k; int get(int &sx,int &sy,int &vi){ int newx=sx,newy=sy,Max=0,cost=-1; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) if(Max<v[i][j])Max=v[i][j],newx=i,newy=j,cost=abs(sx-newx)+abs(sy-newy),vi=v[i][j]; v[newx][newy]=0; sx=newx,sy=newy; return cost; } int main(){int sx,sy,Max=0; m=read(),n=read(),k=read(); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++){ v[i][j]=read(); if(v[i][j]>Max)Max=v[i][j],sx=i,sy=j; } int step=sx+1,t,ans=Max,vi; if(step+sx>k){ wrln(0); return 0; } v[sx][sy]=0; while((t=get(sx,sy,vi))!=-1){ if(step+t+sx+1>k)break; ans+=vi; step+=t+1; } wrln(ans); return 0; }
- 1
信息
- ID
- 1933
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者