入门赛 H 题求调
  • 板块题目总版
  • 楼主Besheep
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/18 16:12
  • 上次更新2025/1/18 19:09:28
查看原帖
入门赛 H 题求调
1186526
Besheep楼主2025/1/18 16:12
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e3+10;
ll n,m,k,a[N][N];
void solve(){
	ll zd=-1,zx=1e18;
	priority_queue<ll>q;
	for(int i=1;i<=m;i++){
		for(int j=1;j<=n;j++){
			a[n+1][i]+=a[j][i];
		}
		zd=max(zd,a[n+1][i]),zx=min(zx,a[n+1][i]);
	}
	for(int i=1;i<=m;i++){
		if(a[n+1][i]==zd||a[n+1][i]==zx){
			for(int j=1;j<=n;j++){
				q.push(a[j][i]);
				a[j][i]=0;
			}
		}
	}
//	while(!q.empty()) cout<<q.top()<<' ',q.pop();
	for(int i=1;i<=n;i++){
		if(i%2==1){
			for(int j=1;j<=m;j++){
				if(a[i][j]==0){
					a[i][j]=q.top();
					q.pop();
				}
			}
		}
		else{
			for(int j=m;j>=1;j--){
				if(a[i][j]==0){
					a[i][j]=q.top();
					q.pop();
				}
			}
		}
	}
}
int main(){
//	freopen("1.in","r",stdin);
//	freopen("1.out","w",stdout);
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];
		}
	}
	while(k--){
		solve();
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<a[i][j]<<' ';
		}
		cout<<'\n';
	}
	return 0;
}
//8 8 3 2 1 1

记录

2025/1/18 16:12
加载中...