65分求调
查看原帖
65分求调
1189413
PURE_LOVE楼主2025/1/22 21:31
#include<bits/stdc++.h>
using namespace std;
long long int n, m, k;
long long int arr[60][60];
long long int brr[60];
int main()
{
	cin >> n >> m >> k;
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			cin >> arr[i][j];
		}
	}
	while (k--)
	{
		for (int i = 1; i <= n; i++)
		{
			for (int j = 1; j <= m; j++)
			{
				brr[j] += arr[i][j];
			}
		}
		long long int mini = 9223372036854775807;
		int maxx = 0;
		set<int>xrr;
		for (int i = 1; i <= m; i++)
		{
			if (brr[i] > maxx)
			{
				maxx = brr[i];
			}
			if (brr[i] < mini)
			{
				mini = brr[i];
			}
		}
		for (int i = 1; i <= m; i++)
		{
			if (brr[i] == maxx)
			{
				xrr.insert(i);
			}
			if (brr[i] == mini)
			{
				xrr.insert(i);
			}
		}
		priority_queue<int>crr;
		for (int i = 1; i <= m; i++)
		{
			if (brr[i] == maxx || brr[i] == mini)
			{
				for (int j = 1; j <= n; j++)
				{
					crr.push(arr[j][i]);
				}
			}
		}
		int cont = 0;
		int sz = xrr.size();
		int y = 0;
		while (!crr.empty())
		{
			long long int temp = crr.top();
			crr.pop();
			int i = (cont / sz) + 1;
			if (i % 2 != 0)y = cont % sz;
			auto it = xrr.begin();
			for (int i = 0; i < y; i++)
			{
				it++;
			}
			if (i % 2 == 0)y--;
			arr[i][*it] = temp;
			cont++;
		}
		xrr.clear();
		priority_queue<int>grr;
		crr.swap(grr);
		memset(brr, 0, sizeof brr);
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = 1; j <= m; j++)
		{
			cout << arr[i][j] << ' ';
		}
		cout << endl;
	}
}
2025/1/22 21:31
加载中...