题目背景
纳西妲很喜欢排列。
题目描述
纳西妲有一个0∼n−1 的排列 c。她希望你构造两个同样为 0∼n−1 的排列的a,b,满足∀i∈[1,n],ci=(ai+bi)modn。如果纳西妲的要求无法被满足,请输出 −1−1。
输入格式
第一行,一个整数 n。
第二行,n 个整数,表示排列 c。
输出格式
如果不存在满足要求的构造,输出一行 −1−1。
否则,输出两行,每行 n 个整数,第一行为 ai,第二行为 bi。
输入输出样例
输入 #1
3 2 1 0
输出 #1
2 0 1 0 1 2
输入 #2
4 1 3 0 2
输出 #2
-1
说明/提示
数据范围
Subtask 1(30 pts):0n≤10。
Subtask 2(20 pts):保证有解。
Subtask 3(50 pts):无特殊性质。
对于 100%的数据,保证 1≤n≤105,c 构成一个排列
喜欢纳西妲~
诈骗······
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100005;
int n;
int a[maxn];
int main() {
cin >> n;
if (n % 2 == 0) {cout << -1 << endl; return 0;}
for (int i = 1; i <= n; i++) {
int x; cin >> x;
if (x % 2 == 0) a[i] = x / 2;
else a[i] = (x + n) / 2;
}
for (int i = 1; i <= n; i++) cout << a[i] << ' ';
cout << endl;
for (int i = 1; i <= n; i++) cout << a[i] << ' ';
cout << endl;
return 0;
}
其实大括号应该单独占一行,但是本蒟蒻为了让代码短·······