我排完序以后是这么写的
```cpp
if(2*time+1<=k) {
time+=1;
number = a[0].geshu;
for(int i=0; i<num; i++) {
if(a[i+1].geshu == 0)break;
distance = abs(a[i+1].x-a[i].x)+abs(a[i+1].y-a[i].y);
time = time+distance+1;
if(time+a[i+1].x<=k) number += a[i+1].geshu;
else break;
}
}
cout<<number;
return 0;
}
```
by linzhanra @ 2022-09-25 12:37:21
完整代码:
```cpp
#include<bits/stdc++.h>
using namespace std;
struct node {
int x;
int y;
int geshu;
} a[100001];
bool cmp(struct node a,struct node b) {
return a.geshu > b.geshu;
}
int main() {
int m,n,k;
int num=0;
int number =0;
int time = 0;
int distance=0;
cin>>m>>n>>k;
for(int i=1; i<=m; i++) {
for(int j=1; j<=n; j++) {
a[num].x=i;
a[num].y=j;
cin>>a[num].geshu;
num++;
}
}
sort(a,a+num,cmp);
time=a[0].x;
if(2*time+1<=k) {
time+=1;
number = a[0].geshu;
for(int i=0; i<num; i++) {
if(a[i+1].geshu == 0)break;
distance = abs(a[i+1].x-a[i].x)+abs(a[i+1].y-a[i].y);
time = time+distance+1;
if(time+a[i+1].x<=k) number += a[i+1].geshu;
else break;
}
}
cout<<number;
return 0;
}
```
by linzhanra @ 2022-09-25 12:38:28