服了,世界上最水的蓝题为什么39分做不对? 代码如下:
#include <iostream>
#include <algorithm>
#define int long long
#define MAXN 10
using namespace std;
signed main()
{
int n;
while (cin >> n)
{
int a[MAXN][MAXN];
int res[MAXN];
int sum = 0;
for (int i=0;i<n;i++) for (int j = 0;j<n;j++)
{
if (i == j)
{
a[i][j] = 0;
continue;
}
else if (i > j) continue;
cin >> a[i][j];
a[j][i] = a[i][j];
sum += a[i][j];
}
if (sum % (n-1) != 0)
{
cout << "Impossible" << endl;
continue;
}
sum /= (n-1);
bool flag = true;
for (int i=0;i<n;i++)
{
int part_sum = 0;
for (int j=0;j<n;j++)
{
if (i != j) part_sum += a[i][j];
}
part_sum -= sum;
if (part_sum % (n-2) != 0)
{
flag = false;
break;
}
res[i] = part_sum / (n-2);
}
if (!flag)
{
cout << "Impossible" << endl;
continue;
}
sort(res, res+n);
for (int i=0;i<n;i++) cout << res[i] << " ";
cout << endl;
}
}
感谢所有回复的dalao们!