CodeForces 625C K-special Tables

Posted on By 二价氢

题目大意

在一个\(n\times n\)的矩阵上填入1到\(n^2\)的数,使得每一行单调递增同时第\(k\)列的元素和最大。

做法

多想想,很简单的。不会就看代码吧,真的很简单。

代码

#include <bits/stdc++.h>
using namespace std;
const int maxn = 500 + 5;
int res[maxn][maxn];
int k, n;
int main() {
	ios::sync_with_stdio(0);
	cin >> n >> k;
	int tr = n * n, ans = 0;
	for (int i = 1; i <= n; i++)
		for (int j = n; j >= k; j--)
			res[i][j] = tr--;
	for (int i = 1; i <= n; i++)
		for (int j = k - 1; j >= 1; j--)
			res[i][j] = tr--;
	for (int i = 1; i <= n; i++)
		ans += res[i][k];
	cout << ans << endl;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= n; j++)
			cout << res[i][j] << (j == n ? '\n' : ' ');
	return 0;
}