[Codeforces] Codeforces Round #668 (Div. 2) A. Permutation Forgery
問題
方針
順列 \( p \) と異なる順列 \( p^{\prime} \) が \( F(p) = F(p^{\prime}) \) となるような \( p^{\prime} \) を見つけます。
\( F(p) \) は、
\[ {p_1 + p_2, p_2 + p_3, \cdots, p_{n-1} + p_{n}}\]
の \( n – 1 \) 個の要素を昇順に並び替えたものなので、\( p^{\prime}_i = p_{n- i +1}\) とすると、\( F(p^{\prime}) \) は、
\[ {p_n + p_{n-1}, p_{n-2} + p_{n-3}, \cdots, p_{2} + p_{1}}\]
を昇順に並び替えたものになるので、 \( F(p) = F(p^{\prime}) \) となります。
コード
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { int t, n; cin >> t; for (int i = 0; i < t; i++) { cin >> n; int p[n]; for (int j = 0; j < n; j++) { cin >> p[j]; } for (int j = n - 1; j >= 0; j--) { if (j == 0) { cout << p[j] << "\n"; } else { cout << p[j] << " "; } } } return 0; }
ディスカッション
コメント一覧
まだ、コメントがありません