小易有一个长度为n的整数序列,a_1,...,a_n。然后考虑在一个空序列b上进行n次以下操作:
1、将a_i放入b序列的末尾
2、逆置b序列
小易需要你计算输出操作n次之后的b序列。
输入包括两行,第一行包括一个整数n(2 ≤ n ≤ 2*10^5),即序列的长度。 第二行包括n个整数a_i(1 ≤ a_i ≤ 10^9),即序列a中的每个整数,以空格分割。
在一行中输出操作n次之后的b序列,以空格分割,行末无空格。
4 1 2 3 4
4 2 1 3
#include <bits/stdc++.h>using namespace std;intmain(){long long n;cin >> n;vector<long long> res(n);vector<long long> result(n);bool flag = true;long long left = 0;long long right = n - 1;for(long long i = 0; i < n; ++i)cin >> res[i];for(long long i = n - 1; i >= 0; --i){if(flag){result[left++] = res[i];flag = false;continue;}else{result[right--] = res[i];flag = true;}}for(long long i = 0; i < n - 1; ++i)cout << result[i] << " ";cout << result[n-1] << endl;return 0;}
#include<iostream> #include<vector> #include<deque> using namespace std; int main(){ int n=0; cin>>n; //vector<int> a(n,0); int a=0; deque<int> b1; deque<int> b2; for(int i=0;i<n;i++){ cin>>a; if((i&1)==0){ //第偶数个 b1.push_front(a); b2.push_back(a); }else{ //第奇数个 b2.push_front(a); b1.push_back(a); } } if(((n-1)&1)==0){ //第偶数个 for(auto x : b1){ cout<<x<<" "; } }else{ //第奇数个 for(auto x : b2){ cout<<x<<" "; } } cout<<endl; return 0; }
#include <iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std; int main(){ int n; while(cin >> n){ // 输入 vector<int> v(n); for(int i = 0; i < n; i++){ cin >> v[i]; } // 最后一个放在最前面,倒数第二个放在最后面,倒数第三个放在第三前面,一前一后地放 vector<int> v2(n); for(int i = 0, j = n - 1, k = n - 1; k >= 0; i++, j--){ v2[i] = v[k]; k--; if(k >= 0){ v2[j] = v[k]; k--; } } // 输出 ostream_iterator<int> it(cout, " "); copy(v2.begin(), v2.end(), it); cout << endl; } return 0; }