80分求助WA#4#7
查看原帖
80分求助WA#4#7
1073222
sycz_scc楼主2024/7/10 08:27
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1010;

int maxs[N];
int x[N],y[N];
int a[N][N];
int m,n,k;
int ans;


inline int read(){
	int x=0,f=1;
	char ch=getchar();
	while((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
	if(ch=='-') f=-1,ch=getchar();
	while(ch>='0'&&ch<='9'){
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x*f;
}

bool f(int i){	
	int l=abs(x[i]-x[i-1])+abs(y[i]-y[i-1])+1; 
	if(l+x[i]<=k){
		k=k-l;
		return 1;
	}
	return 0;
}

int main(){
	m=read();
	n=read();
	k=read();
	int s=1;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			a[i][j]=read();
			if(a[i][j]!=0){
				maxs[s]=a[i][j];
				x[s]=i;
				y[s]=j;
				++s;
			}
		}
	}
	s--;
	for(int i=1;i<=s;i++){
		for(int j=1;j<=i;j++){
			if(maxs[i]>maxs[j]){
				swap(maxs[i],maxs[j]);
				swap(x[i],x[j]);
				swap(y[i],y[j]);
			}
		}
	}
	//for(int i=1;i<=s;i++) cout<<maxs[i]<<" ";
	//cout<<endl;
	//for(int i=1;i<=s;i++) cout<<y[i]<<" ";
	//cout<<endl;
	//for(int i=1;i<=s;i++) cout<<x[i]<<" ";
	//cout<<endl;
	y[0]=y[1];
	for(int i=1;i<=s;i++){
		if(f(i)==1){
			ans+=maxs[i];
		}
		else{
			printf("%d",ans);
			return 0;
		}
	}	
}
2024/7/10 08:27
加载中...