题目描述
新学期开始了,小哈是小哼的新同学,小哼向小哈询问QQ号,小哈当然不会直接告诉小哼。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾,再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是小哈的QQ啦。现在你来帮帮小哼吧。小哈给小哼加密过的一串数是“6 3 1 7 5 8 9 2 4”。解密后小哈的QQ号应该是“6 1 5 9 4 7 2 8 3”。现在问题是要求输入解密结果,求出原来的序列。
输入
输入解密结果第一个数是n代表随后有n个数字 代表了小哈解密后的数字
输出
第一个数字是序列的长度后面是小哼给他的原始序列每一个数字后面一个空格
样例输入
9
6 1 5 9 4 7 2 8 3
样例输出
9
6 3 1 7 5 8 9 2 4
#include<bits/stdc++.h>
using namespace std;
const int maxn = 4e5 + 100;
int data[maxn], head = maxn / 2, tail = head - 1;
int n, a[maxn];
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int i = n - 1; i >= 0; --i) {
if (head < tail) {
data[--head] = data[tail--];
}
data[--head] = a[i];
}
cout << n << endl;
while (head <= tail) {
cout << data[head++] << " ";
}
return 0;
}