NC222495. [USACOFeb2020B]SwapitySwap
描述
输入描述
The first line of input contains N and K. The second line contains A1 and A2, and the third contains B1 and B2.
输出描述
On the ith line of output, print the label of the ith cow from the left at the end of the exercise routine.
示例1
输入:
7 2 2 5 3 7
输出:
1 2 4 3 5 7 6
说明:
Initially, the order of the cows is [1,2,3,4,5,6,7] from left to right. After the first step of the process, the order is [1,5,4,3,2,6,7]. After the second step of the process, the order is [1,5,7,6,2,3,4]. Repeating both steps a second time yields the output of the sample.C++ 解法, 执行用时: 9ms, 内存消耗: 416K, 提交时间: 2022-06-16 19:00:59
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false), cin.tie(0); int N, K, a1, a2, b1, b2; cin >> N >> K >> a1 >> a2 >> b1 >> b2, a1--, a2--, b1--, b2--; vector<int> ori(N); iota(begin(ori), end(ori), 0); auto cur = ori; auto pc = begin(cur); int period = 0; do { period++; reverse(pc + a1, pc + a2 + 1), reverse(pc + b1, pc + b2 + 1); } while (cur != ori); for (K %= period; K; K--) reverse(pc + a1, pc + a2 + 1), reverse(pc + b1, pc + b2 + 1); for (int t : cur) cout << t + 1 << "\n"; }