#include <iostream>
#include <vector>
#include <numeric>
#include <limits>
using namespace std;
// 检查当前矩阵中是否有至少k个元素满足条件
int check_conditions(const vector<vector<int>>& matrix, int n, int m, int k)
{
int count = 0;
for (int i = 0; i < n; ++i)
{
int row_sum = accumulate(matrix[i].begin(), matrix[i].end(), 0);
for (int j = 0; j < m; ++j)
{
int col_sum = 0;
for (int r = 0; r < n; ++r)
{
col_sum += matrix[r][j];
}
if (matrix[i][j] >= row_sum + col_sum)
{
++count;
}
}
}
return count;
}
int min_minus_operations(vector<vector<int>>& matrix, int n, int m, int k)
{
int minus_operations = 0;
while (true)
{
// 检查当前矩阵是否满足条件
int current_count = check_conditions(matrix, n, m, k);
if (current_count >= k)
{
return minus_operations;
}
// 对矩阵进行minus操作
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
--matrix[i][j];
}
}
++minus_operations;
}
}
int main()
{
int n, m, k;
cin >> n >> m >> k;
vector<vector<int>> matrix(n, vector<int>(m));
for (int i = 0; i < n; ++i)
{
for (int j = 0; j < m; ++j)
{
cin >> matrix[i][j];
}
}
int result = min_minus_operations(matrix, n, m, k);
cout << result << endl;
return 0;
}
我把这玩意扔进 B3811 里边,后面仨测试点全 TLE 了,求救